Использование Launchd для вызова скрипта Python?
Как продолжение моего первоначального вопроса...
Регулярно резервное копирование файла журнала в OSX?
Я пытаюсь сделать резервную копию файла журнала на компьютере OSX и взломанном iPhone. LaunchD был рекомендован в качестве решения, и некоторые поиски в Google позже показали, что LingOn - это инструмент для использования.
Вывод (после заполнения полей) дает мне этот 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>
Теперь, запустив мой скрипт на Python, вызвав его в терминале, я успешно отправлю письмо на мой почтовый ящик с необходимыми вложениями.
LaunchD просто не запускается, и я не знаю почему.
1 ответ
Вам нужно загрузить агента. Либо повторно, либо launchctl load /path/to/file.plist
,
RunAtLoad
по умолчанию имеет значение false, поэтому скрипт запускается впервые StartInterval
секунд после загрузки, в данном случае 3600.
Путь в ProgramArguments
должен указывать на постоянное местоположение скрипта, поэтому он, вероятно, не должен быть в ~/Desktop/
, Целевой скрипт не обязательно должен быть исполняемым. Но как правильно устранить неполадки @DanielBeck в комментариях, проверьте, что вы можете, например, python /Users/ash/Desktop/sendemail.py
во-первых, и что линия Шебанга правильна.