Ich möchte eine Datei mit .sh-Typ oder .py auf Mac OS X starten, ohne root zu verwenden, Ich habe in Google gesucht und gefunden launchctl kann mir helfen,
Also lese ich Tutorial und mache dasselbe im Tutorial, aber es funktioniert nicht für mich, [ich benutze mac os x 10.9 x64]
Meine .plist-Datei [1.sh-Datei alle 60 Sekunden ausführen]:
%Vor%Quelle von 1.sh:
%Vor%Ich habe Run.plist in /Users/paul/Run.plist
gestelltund führen Sie den Befehl vom Terminal aus:
%Vor%Befehle werden ohne Fehler ausgeführt, aber ich sehe nichts alles in works.txt
kann mir bitte jemand helfen?
Aus irgendeinem Grund, dass Sie keine normale Crontab verwenden möchten?
%Vor%Dieser Befehl sollte einen Cron-Job hinzufügen, der einmal pro Minute ausgeführt wird.
Beachten Sie, dass dieser Befehl auch alle crontab ersetzt, die Sie bereits haben. Der Befehl crontab -
sollte mit Vorsicht als Abkürzung verwendet werden.
Wenn Sie ein vorhandenes crontab bearbeiten möchten, um zu vermeiden, dass zuvor eingestellte Jobs gelöscht werden, können Sie crontab -e
verwenden. (Wenn vim
gestartet wird und Sie nicht wissen, wie vim
verwendet werden soll, können Sie durch Drücken von ESC : q
Wenn Sie Anweisungen zum Bearbeiten von Crontabs benötigen, geben Sie man crontab
in Ihre Shell ein. Wenn Sie Syntaxinformationen für die crontab-Datei benötigen, zeigt man 5 crontab
dies an.
Viel Spaß!
UPDATE: (pro Kommentar)
Um Ihren Job alle 30 Sekunden auszuführen, ist ein einfacher Hack erforderlich. Cron führt Jobs nur pro Minute aus, so dass Sie alle 30 Sekunden zwei Jobs ausführen können, von denen einer eine Verzögerung von 30 Sekunden hat. Zum Beispiel:
%Vor%Hoffe, das hilft.
Um zu verdeutlichen: Die OP's .plist
datei selbst war vollkommen OK - das Problem stellte sich heraus, dass innerhalb des Shell-Skripts aufgerufen wurde ( in der Frage nicht gezeigt).
Auf OS X verwenden .plist
-Dateien, die vom CLI launchctl
geladen und vom Daemon-Manager launchd
aufgerufen wurden, die bevorzugte Art der Planung von wiederkehrenden Aufgaben (siehe unten für mehr).
Zu beachten:
launchd
.plist
Dateien ist beschrieben unter Ссылка oder man launchd.plist
.plist
-Datei bei jeder Anmeldung des aktuellen Benutzers geladen wird, muss sie in ~/Library/LaunchAgents/
() platziert werden All-User -Dateien müssen in /Library/LaunchAgent/
platziert werden - erfordert Root-Rechte. StandardOutPath
und StandardErrorPath
bedeutet, dass nachfolgende Aufrufe an die angegebenen Dateien angehängt werden, was bedeutet, dass diese Dateien beibehalten werden unbegrenzt wachsen , sofern nicht extern verwaltet . Console.app
und nach com.apple.launchd.peruser
entries suchen - ein Fehler beim Aufruf des Befehls .plist
würde dort zeigen. @ ghotis Antwort beschreibt eine allgemeine Unix-Alternative für launchd
, cron
(wird normalerweise unter Linux verwendet):
Wie sich cron
auf OS X bezieht: @ghoti fragt:
Aus irgendeinem Grund, dass Sie keine normale Crontab verwenden möchten?
Unter OS X wird man crontab
empfohlen (Hervorhebung hinzugefügt):
Obwohl cron (8) und crontab (5) offiziell unterstützt werden unter Darwin [OS X] wurde ihre Funktionalität in launchd (8) aufgenommen , Dies bietet eine flexiblere Möglichkeit zur automatischen Ausführung von Befehlen . Weitere Informationen finden Sie unter launchctl (1).
Die untere Zeile lautet:
cron
und crontab
weiterhin verwenden, vorausgesetzt,
launchd
geplant sind. cron
und können mit / um sie arbeiten. launchd
und legen daher periodische Hintergrundaufgaben über .plist
files in /Library/LaunchAgents
(für alle Benutzer) oder ~/Library/LaunchAgents
(für den aktuellen Benutzer) fest. launchd
bietet, nutzen möchten, gehen Sie mit der Angabe von Hintergrundaufgaben über .plist
-Dateien vor, die von% ausgewertet werden. co_de%. Das Hinzufügen einfacher launchd
Aufgaben ist wahrscheinlich einfacher als das Erstellen von cron
Dateien für .plist
, aber von Dienstprogrammen von Drittanbietern wie Lingon 3 kann mit letzterem helfen.
Außerdem gibt es subtile Unterschiede in der Art, wie launchd
Aufgaben aufgerufen werden, im Vergleich zu pro Benutzer cron
Aufgaben: die ersteren erlauben keine Benutzerinteraktion über AppleScript, während letztere mach das.
In diesem Fall erhöhte Flexibilität von launchd
: Das OP fragt in einem Folgekommentar, dass die Aufgabe alle 30 Sekunden ausführen soll:
Das minimale Intervall für launchd
Aufgaben beträgt 60 Sekunden , was die Problemumgehung in @ ghotis Antwort erfordert.
Im Gegensatz dazu ist es mit der Datei cron
launchd
ausreichend, .plist
in <key>StartInterval</key><integer>60</integer>
zu ändern.