Shell-Skript nicht automatisch ausgeführt wird, obwohl es in Mac OS X Startobjekte registriert
Frage
Ich habe den folgenden Shell-Skript in meinen „Login Items“ Präferenzen registriert, aber es scheint keine Wirkung zu haben. Es sollte das Moinmoin-Wiki starten, aber nur funktioniert, wenn es von Hand von einem Terminalfenster ausgeführt wird, nach dem es ausgeführt wird, bis die Maschine weiter heruntergefahren wird.
#!/bin/bash
cd /Users/stuartcw/Documents/Wiki/moin-1.7.2
/usr/bin/python wikiserver.py >> logs/`date +"%d%b%Y"`.log 2>&1 &
Ich würde wie das Wiki wirklich nach dem Neustart zur Verfügung steht, um jede Hilfe beim Verständnis dieser geschätzt würde.
Lösung
launchd ist einer der besten Teile von MacOS X, und es macht mir große Schmerzen nicht in der Lage sein, sie auf anderen Systemen zu finden.
Bearbeiten und Platz dies in /Library/LaunchDaemons
als com.you.wiki.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.you.wiki</string>
<key>LowPriorityIO</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>Nice</key>
<integer>1</integer>
<key>WorkingDirectory</key>
<string>/Users/stuartcw/Documents/Wiki/moin-1.7.2</string>
<key>UserName</key>
<string>user to run this as</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>wikiserver.py</string>
</array>
</dict>
</plist>
Andere Tipps
Versuchen Sie launchd verwenden. Weitere Informationen unter http://www.macgeekery.com/tips/all_about_launchd_items_and_how_to_make_one_yourself
Einige hilfreiche Links:
Mac OS X: Erstellen eines Login-Haken
Herstellung von Shell-Skripten starten bei der Anmeldung oder beim Systemstart
Siehe auch Lingon für einen Frontend , sollten Sie sich entscheiden Launchd stattdessen zu verwenden.
Ich weiß nicht viel darüber, da ich Anmeldeobjekte nicht verwenden. Nur ein Vorschlag, vielleicht versuchen, mit Applescript, die diese Shell-Kommandos aufruft, und setzte sich in Anmeldeobjekte.