Если вы хотите, чтобы скрипт выполнялся как процесс демона, который запускается автоматически, вы можете использовать launchctl и файл plist.
Например, у Боба есть простой скрипт на python, который каждую секунду записывает слово «foo» в файл в его домашнем каталоге:
#!/usr/bin/env python
import os
import time
while True:
os.system('echo " foo" >> /Users/bob/foostore.txt')
time.sleep(1)
Чтобы запустить его как процесс-демон, создайте файл plist, ~/Library/LaunchAgents/com.bobbob.osx.test.plist
, с содержанием:
<?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>com.bobbob.osx.test</string>
<key>Program</key>
<string>/Users/bob/pyfoo.py</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Затем используйте launchctl
для загрузки списка с терминала:
launchctl load ~/Library/LaunchAgents/com.bobbob.osx.test.plist
Это загрузит этот скрипт и сразу запустит программу в элементе <string>
под <key>Program</key>
. Вы также можете указать аргументы для программы, используя узел <ProgramArguments>
с массивом элементов <string>
. Для получения дополнительной информации см. Справочную страницу launchd.plist
Если вы хотите удалить скрипт, вы можете использовать команду unload launchctl
:
launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist
Метка, используемая в сценарии, может быть любой, но она должна быть уникальной в вашей системе, поэтому Apple обычно использует обратное доменное имя.
Что касается автозапуска скрипта, я не думаю, что есть какой-либо способ сделать это.