Ich möchte Crontabs durch LaunchAgents ersetzen. Mein erster Versuch funktioniert nicht.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.nocturnal.mcworldsBackup</string>
<key>ProgramArguments</key>
<array>
<string>~/bin/mcworldsBackup.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>4</integer>
<key>Minute</key>
<integer>30</integer>
</dict>
</dict>
</plist>
Das Skript mcworldsBackup.sh funktioniert eigenständig. Ich habe es dazu gebracht, bei jeder Ausführung einen Zeitstempel in einer Datei zu protokollieren, und bisher hat launchd es nicht ein einziges Mal ausgeführt.
Ich habe die Berechtigungen meiner Festplatte mit DiskUtility überprüft und repariert, die plist befindet sich in ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist mit den Berechtigungen 0644, genau wie alle anderen .plist-Dateien, die sich bereits darin befinden. Sie gehören mir alle: Mitarbeiter.
Wenn ich in /var/log/* nach mcworldsBackup.sh suche, finde ich nichts, keine Hinweise darauf, warum es nicht ausgeführt wird.
Nachdem ich die Plist zum ersten Mal erstellt habe, habe ich mich abgemeldet und wieder angemeldet und den Computer mehrmals neu gestartet, obwohl die Dokumentation besagt, dass Sie sich nur anmelden müssen.
Sie müssen den vollständigen Pfad in ProgramArguments angeben. Dinge, die Ihre Shell normalerweise erweitert, wie z. B. ~
und *
werden nicht erweitert durch launchd
.
Nachdem ich diese Änderungen vorgenommen hatte, funktionierte dieser LaunchAgent für mich.
Sie sagten, Sie hätten diese Änderungen vorgenommen, aber es wurde nicht behoben. Es ist möglich, dass Sie den LaunchAgent nach den Änderungen nicht neu geladen haben.
Sie können überprüfen, ob Ihr LaunchAgent derzeit geladen ist, indem Sie ihn ausführen
launchctl list | grep com.nocturnal.mcworldsBackup
Wenn es nicht läuft, können Sie es mit laden
launchctl load ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist
Wenn Sie Änderungen an der Plist-Datei vornehmen, müssen Sie sie mit entladen
luanchctl unload ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist
Sie müssen es dann erneut laden, indem Sie den Befehl von oben verwenden.
Wenn Sie den Start des LaunchAgent jetzt erzwingen möchten, anstatt bis 4:30 Uhr zu warten, können Sie ihn ausführen
launchctl start com.nocturnal.mcworldsBackup
Sie können es dann mit auflisten
launchctl list | grep com.nocturnal.mcworldsBackup
Die erste Spalte des Ergebnisses ist die PID des Prozesses, falls er gerade läuft. Die zweite Spalte ist der Exit-Code, der bei der letzten Ausführung zurückgegeben wurde. Verwenden Sie dies, um zu überprüfen, ob es ordnungsgemäß gelaufen ist. Wenn nicht, wird die Fehlermeldung in geschrieben /var/log/system.log
.
shanusmagnus
Stefan Midjich