Я пытаюсь настроить launchd для запуска исполняемого файла сценария / Unix Python (то есть сценарий Python с линией Shebang). Когда я загружаю файл .plist (ниже), launchctl
показывает состояние 127, означающее "Указанный сервис не поставляется с операционной системой". Однако, когда я копирую и вставляю значение, которое я ввел для "программы" в файле .plist, в терминал Mac все работает нормально.
Я перенаправил stdout/stderr в терминал (через .plist), и он возвращает сообщение,
$ env: python3: нет такого файла или каталога
Если я заменю значение Program
в plist на простой пакетный скрипт 'hello world', он будет работать нормально.
Почему программа python (urlwatch) нормально работает в терминале, но возвращает ошибку при вызове через launchd? Как мне это исправить?
Плист файл:
<?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>local.careersWatch3</string>
<key>Program</key>
<string>/Users/justinmichael/Documents/urlwatch-master/urlwatch</string>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/dev/ttys000</string>
<key>StandardErrorPath</key>
<string>/dev/ttys000</string>
</dict>
</plist>
В конце концов я хочу запускать скрипт в установленное время дня, но сейчас я использую RunAtLoad
= true
для целей тестирования, пока не смогу заставить его работать.
Загрузка в launchd и вывод:
$ launchctl load ~/Library/LaunchAgents/local.careerswatch3.plist
$ env: python3: No such file or directory
Позвоните, чтобы проверить статус агента и вывод:
$ launchctl list | grep local.careersWatch3
- 127 local.careersWatch3
Поиск значения кода «127» в терминале:
$ launchctl error 127
127: The specified service did not ship with the operating system