Я хочу, щоб сценарій (bash / zsh / ruby / ...) запускався під час завантаження в OS X. Що найпростіший спосіб зробити це, не псуючи файли xml / plist, і, бажано, не потрібно робити мета AppleScript .
Я хочу, щоб сценарій (bash / zsh / ruby / ...) запускався під час завантаження в OS X. Що найпростіший спосіб зробити це, не псуючи файли xml / plist, і, бажано, не потрібно робити мета AppleScript .
Відповіді:
MacOS X використовує крон Vixie, який має спеціальні метатеги для запуску під час перезавантаження. Див. Головну сторінку щодо формату файлу.
щось на зразок:
@reboot /path/to/script.sh
у вашому кронтабі буде працювати. Я не впевнений, що це краще рішення, ніж запуск, напевно, у вас є більше мета-інструментів, які дивляться на запуск, ніж на cron.
У випадку, якщо ви зміните свою думку:
<?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.superuser.245713</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/script.sh</string>
</array>
<key>UserName</key>
<string>someuser</string>
</dict>
</plist>
Магазин , як com.superuser.245713.plist
в /Library/LaunchAgents/
і зробити root:wheel
власника / групи.
/Library/LaunchAgents
а не /System/Library/LaunchDaemons
так, /System
як специфічні для ОС речі, а той, що /Library
знаходиться нижче, використовується більше для сторонніх матеріалів. Крім того, LaunchDaemons
"повинен містити елементи, які запускатимуться як root, як правило, фонові процеси", де LaunchAgents
"запускати як користувач або в контексті userland". Джерелом цих цитат є чудова стаття про запуск, яку я консультую для питань запуску.
Також є гачки для входу, якщо ви хочете, щоб сценарій запускався (як root), коли користувач входить у систему, а не під час завантаження машини.
cron
для OS X це не так вже й добре, якщо вести журнал за замовчуванням (була тема про це всього кілька днів тому).