Zawsze byłem crontabem. Niedawno zdecydowałem się przełączyć na procesy uruchomieniowe Apple'a i nie mogę uruchomić mojej pierwszej wersji.
The
plutil -lintpolecenie mówi mi, że plist jest poprawnie sformatowany. W rzeczywistości wyświetla „OK”.Uruchomiłem skrypt bash ręcznie i potwierdziłem, że działa poprawnie po ręcznym zainicjowaniu.
Załadowałem plik używając loadctl load i otrzymałem odpowiedź „już załadowany” przy wielokrotnych próbach zrobienia tego samego.
Problem musi być w mojej definicji PLIST. Pomóż mi zauważyć błąd.
Spodziewam się, że będzie działać z następującymi warunkami:
- Tylko gdy użytkownik
jaredclemencekorzysta z systemu - Raz natychmiast po zalogowaniu
- Co 15 minut później
- Zmień katalog na
/Library/WebServer/Documents/medface/przed uruchomieniem skryptu.
Plik plist wygląda następująco:
<?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>org.pediatricheartcenter.medface.crons</string>
<key>User</key>
<string>jaredclemence</string>
<key>ProgramArguments</key>
<array>
<string>/User/jaredclemence/runMedfaceSchedTasks.batch</string>
</array>
<key>WorkingDirectory</key>
<string>/Library/WebServer/Documents/medface</string>
<key>StartInterval</key>
<integer>900</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Uwagi:
- Zapisałem plik w
~/Library/LaunchAgents/org.pediatricheartcenter.medface.crons.plist - Poprzednia wersja użytego pliku
ProgramzamiastProgramArgumentsz<string>wartość zamiast tablicy.
<key>StandardOutPath</key>i<key>StandardErrorPath</key>- Proponuję~/Library/Logs/org.pediatricheartcenter.medface.crons.stdout(i...stderr) ponieważ jest to zwykła lokalizacja logowania dla agentów startowych, ale używaj tego, co działa dla ciebie. Dodajecholubprintfs na początku i na końcurunMedfaceSchedTasks.batchi zobacz, co logi mówią po tobielaunchctl loadTwójplist.