Я использую Mac OS X 10.10.5 (Yosemite) для обучения использованию launchd (Launch Daemon) для автоматического запуска некоторых скриптов. Для простоты я решил использовать скрипт shell
который содержит только команду echo
.
Содержимое hello.sh
:
#! /bin/sh
echo "hello"
Также я запустил chmod a+x hello.sh
чтобы сделать его исполняемым, и когда я запускаю скрипт вручную, он работает нормально.
В ~/Library/LaunchAgents/
меня есть com.yang.hello.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.yang.hello</string>
<key>Program</key>
<string>/Users/yangyy/hello.sh</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
После того, как я бегу:
launchctl load -w ~/Library/LaunchAgents/com.yang.hello.plist
Сообщение об ошибке не появляется, и если я запускаю эту команду:
launchctl list | grep "com.yang.hello"
Я получаю ответ:
- 78 com.yang.hello.plist
Кажется, что положительное число указывает на код завершения, и программа фактически не работает.
Кроме того, я нахожу что-то странное, когда я пытался использовать launchctl start ~/Library/LaunchAgents/com.yang.hello.plist
для запуска программы, но когда я использую эту команду, она возвращает ошибку и сообщение об ошибке отсутствует.
В чем дело?