Ich bin gerade mit El Capitan auf ein neues MacBook umgezogen und habe versucht, meine Crontab für Sicherungsaufgaben einzurichten. Hier ist, wie ich es eingerichtet habe (via crontab -e
)
40 7 * * * /Users/myusername/daily.sh "daily tasks run 7:40a"
Daily.sh sieht so aus
open -b com.apple.terminal ~/backupThing1.sh
open -b com.apple.terminal ~/dailyThing2.sh
Ich habe es so eingerichtet, dass ich sehe, dass die Terminals hochkommen und auf einige Eingaben und Passwortabfragen reagieren können.
Auf jeden Fall schlägt diese Aufgabe mit den folgenden Meldungen fehl:
LSOpenURLsWithRole() failed for the application /Applications/Utilities/Terminal.app with error -600 for the file /Users/myusername/backupThing1.sh.
LSOpenURLsWithRole() failed for the application /Applications/Utilities/Terminal.app with error -600 for the file /Users/myusername/dailyThing1.sh.
Ich habe überprüft, dass diese Skripte im Besitz von myusername
und ausführbar sind. Was vermisse ich?
command-line
crontab
Jlarson
quelle
quelle
Antworten:
Wie in der anderen Antwort angegeben, liegt der Fehler daran, dass Sie versuchen, eine GUI-App auszuführen, wenn Sie nicht angemeldet sind.
Aber in deinem Fall, warum benutzt du hier eine GUI-App (Terminal)?
Rufen Sie einfach Ihre Skripte direkt aus dem Cron-Skript auf.
zB sollte täglich / sh sein
Beachten Sie, dass Sie hier möglicherweise absolute Pfade benötigen, da Cron-Jobs nicht dieselbe Umgebung haben wie im Terminal.
quelle
~
in den meisten Kontexten verwenden, in denen~
dies nicht funktioniert.Sie werden diesen Fehler sehen
Wenn Sie versuchen, die meisten offenen Befehle (einschließlich Kalender, PhotoBooth usw.) auszuführen, ohne dass ein Benutzer über die eigentliche GUI angemeldet ist. Wenn Sie remote sind, stellen Sie eine Verbindung über VNC her und melden Sie sich an. Andernfalls melden Sie sich einfach über die reguläre OS X-Benutzeroberfläche an (dh über den Anmeldebildschirm, den wir verwenden).
quelle