Який найпростіший спосіб запустити сценарій під час завантаження в OS X?


12

Я хочу, щоб сценарій (bash / zsh / ruby ​​/ ...) запускався під час завантаження в OS X. Що найпростіший спосіб зробити це, не псуючи файли xml / plist, і, бажано, не потрібно робити мета AppleScript .

Відповіді:


7

MacOS X використовує крон Vixie, який має спеціальні метатеги для запуску під час перезавантаження. Див. Головну сторінку щодо формату файлу.

щось на зразок:

@reboot /path/to/script.sh

у вашому кронтабі буде працювати. Я не впевнений, що це краще рішення, ніж запуск, напевно, у вас є більше мета-інструментів, які дивляться на запуск, ніж на cron.


Любіть це, ви помилилися :-) Хоча cronдля OS X це не так вже й добре, якщо вести журнал за замовчуванням (була тема про це всього кілька днів тому).
Даніель Бек

це прекрасно.
Джон Бачір

1
Зауважте, що cron, at і так далі в деякій мірі застаріли в OS X. Я не можу знайти явного твердження про це в різних документах, і не знаю, наскільки вони агресивно застаріли, але запуск здається загалом кращим. Див. Стартову документацію для ознайомлення.
Норман Грей

plist не буде працювати для мене - це працює як шарм - дякую! :-D
БГ Бруно

Чесно кажучи, не був впевнений, чи синтаксис буде однаковим на OS X.
NobleUplift

6

У випадку, якщо ви зміните свою думку:

<?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власника / групи.


1
Можливо, краще вкласти це, /Library/LaunchAgentsа не /System/Library/LaunchDaemonsтак, /Systemяк специфічні для ОС речі, а той, що /Libraryзнаходиться нижче, використовується більше для сторонніх матеріалів. Крім того, LaunchDaemons"повинен містити елементи, які запускатимуться як root, як правило, фонові процеси", де LaunchAgents"запускати як користувач або в контексті userland". Джерелом цих цитат є чудова стаття про запуск, яку я консультую для питань запуску.
Дуг Гарріс

@DougHarris Дякую за пропозиції! Маю визнати, що я просто набирав цю спеціальну програму - хоча я зазвичай тестую свої рішення, я не хотів для цього перезавантажувати свою машину.
Даніель Бек

Це дуже приємно, хоча мені краще подобається рішення Vixie cron :)
Джон Бачір

Насправді, його слід помістити в / Бібліотека / LaunchDaemons. Агенти запускаються лише в межах сеансу користувача, тобто вони не запускаються (а точніше, стають придатними для запуску) до тих пір, поки хтось не ввійде в систему, запускається знову кожного разу, коли хтось увійде в систему, і завжди запускається як користувач, який увійшов у даний момент. Демони запускаються (/ стають придатними для запуску) під час завантаження, і, як правило, вони виконуються як root, вони можуть бути запущені як і інші користувачі за допомогою ключа UserName.
Гордон Девіссон


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.