Nie mogę zaplanować okresowego uruchamiania z launchctl
/ launchd
na OS X (Leopard). Zasadniczo nie jestem w stanie znaleźć listy instrukcji krok po kroku w Internecie, a intuicyjne podejście nie działa.
sync.plist
Pliku:
<?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>net.madrat.utils.sync</string>
<key>Program</key>
<string>rsync</string>
<key>ProgramArguments</key>
<array>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>
<key>StartInterval</key>
<integer>7200</integer>
</dict>
</plist>
Umieściłem ten skrypt na ścieżce ~/Library/LaunchAgents
.
Następnie zarejestrowałem skrypt za pomocą
launchctl load ~/Library/LaunchAgents/sync.plist
Wreszcie, aby sprawdzić, czy to działa, rozpocząłem pracę:
launchctl start net.madrat.utils.sync
- Nic się nie stało. Ręczne wykonanie rsync
polecenia w terminalu daje oczekiwany wynik.
Jestem całkiem pewien, że zadanie zostało poprawnie zarejestrowane, ponieważ jeśli spróbuję uruchomić nieistniejące zadanie, pojawia się komunikat o błędzie (którego nie otrzymałem w powyższym poleceniu).
Co zrobiłem źle?
launchctl list
sam wyświetlacz 1, ale dopiero po tym, jak zaczął agenta ręcznie za pomocąlaunchctl start
.