Jako kontynuacja mojego początkowego pytania ...
Rutynowo archiwizowany plik dziennika w OSX?
Próbuję wykonać kopię zapasową pliku dziennika na komputerze z OSX i iPhone'em z jailbreakiem. LaunchD został zalecony jako rozwiązanie, a niektóre wyszukiwania Google później ujawniły LingOn jako narzędzie do użycia.
Wyjście (po wypełnieniu pól) daje mi ten PList:
<?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.ash.MySuperLaunchd</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>/Users/ash/Desktop/sendemail.py</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
Teraz uruchamiając mój skrypt Pythona, wywołując go w terminalu, pomyślnie wyślę wiadomość e-mail do skrzynki odbiorczej z załącznikami, których potrzebuję.
LaunchD po prostu się nie uruchamia i nie jestem pewien dlaczego.
sudo launchctl load w- com.ash.MySuperLaunchd
which python
i wykonanie go bezpośrednio, aby obejść problemy z PATH. Na koniec sprawdź/Applications/Utilities/Console.app
komunikaty o błędach.Odpowiedzi:
Musisz załadować agenta. Albo relogin, albo
launchctl load /path/to/file.plist
.RunAtLoad
jest domyślnie fałszywe, więc skrypt jest uruchamiany po raz pierwszyStartInterval
po załadowaniu, w tym przypadku 3600.Ścieżka w
ProgramArguments
musi wskazywać stałą lokalizację skryptu, więc prawdopodobnie nie powinno być na niej~/Desktop/
. Skrypt docelowy nie musi być wykonywalny. Ale jak słusznie pokazuje @DanielBeck w komentarzach, sprawdź, czy jesteś w stanie na przykładpython /Users/ash/Desktop/sendemail.py
w pierwszej kolejności i czy linia shebang jest poprawna.źródło