Як зробити так, щоб сценарій або додаток автоматично запускалися або припинялися, коли система завантажується, користувач входить у визначений час, коли диск приєднаний тощо?
Як зробити так, щоб сценарій або додаток автоматично запускалися або припинялися, коли система завантажується, користувач входить у визначений час, коли диск приєднаний тощо?
Відповіді:
Якщо ви хочете щось запустити, коли користувач входить, найпростіший спосіб - це використовувати графічний інтерфейс. Ти можеш
System Prefs > Accounts > Login Items
екран і додайте туди предмет
+
символу.app
на панельOptions
, а потім виберітьOpen at Login
Якщо ви хочете запустити щось, що не є .app
, або ви хочете мати більше контролю над його запуском, наприклад:
то ви хочете використовувати технічне рішення, яке є launchd
.
Найпростіший спосіб налаштування launchd
конфігураційного файлу - використовувати інструмент для надання допомоги. На момент написання найпопулярнішим методом є Lingon (який має старішу безкоштовну версію, доступну у SourceForge) або інструмент веб-сайту PList .
Якщо ви не хочете використовувати LINGON або Plist сайт і хочете використовувати тільки сирі інструменти , доступні в системі, ви можете написати свій власний launchd
plist
вручну
Ось мій сценарій запуску для запуску SomeApp безперервно після завантаження системи (незалежно від входу користувача). Він знаходиться в / Система / Бібліотека / LaunchAgents / і називається SomeApp.restart.plist. Якщо він запускається на основі входу користувача, він може зберігатися у ~ / Library / LaunchAgents /
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Завантажте його один раз
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
Опція запустить додаток в перший раз launchctl працює це.KeepAlive
Варіант буде повторно запустити додаток , якщо він виходить з ладу.StartCalendarInterval
Запускатиме його в певний час. Імовірно, це взаємно виключається з попередніх двох, але включено, щоб показати, що можна зробитиlaunchd
Є багато додаткових опцій , які можна знайти, експериментуючи з LINGON або читаючи сторінки людини для launchctl
, launchd.plist
, plist
, launchd.conf
і т.д.
launchctl load -w ...
щоб зміни були стійкими. На основі ваших відгуків я оновив сценарій конфігуратора poweruser для OSX
Лінгон досі працює. Я просто використовував це минулого тижня для створення "запланованого завдання". Після завантаження мені довелося скористатися його автоматичним оновленням, щоб отримати останню версію, але вона працює чудово.
Якщо потрібно запускатись лише під час завантаження системи, просто перейдіть на вкладку Елементи входу на панелі налаштувань облікових записів у системних налаштуваннях.
Якщо це сценарій, використовуйте AppleScript Editor, щоб зберегти його як додаток. Якщо це не сценарій AppleScript, ви все одно можете використовувати AppleScript для запуску такого сценарію:
do shell script "your script here"
Не забудьте Loginhooks.
Хоча вони працюють як root, ви повинні мати можливість виконувати сценарій $ HOME / .loginhook, використовуючи щось подібне:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Потім просто додайте всі команди, які ви хочете, до ~ / .loginhook
Крім того, хоча "запуск" - це "шлях Mac", це все ще є цілком життєздатним варіантом і набагато простіше редагувати вручну, ніж запущені файли XML.
Особисто я щасливо заплатив 5 доларів за Лінгона .
/path/to/script
, і sudo defaults write com.apple.loginwindow LoginHook /path/to/script
? І сенс запуску сценарію в домашньому каталозі полягає в тому, що кожен користувач може мати власний (чи ні) ~/.loginhook
?
Запустити додаток у визначений час можна легко в iCal, як я щойно дізнався завдяки іншому форуму!
Слід пам’ятати про те, що якщо у вас є декілька Macs-файлів, які діляться через iCloud, ця подія також відбуватиметься в тих додатках, які ви можете або не хочете. Щоб це відбулося лише на одному Mac, вам потрібно створити подію в календарі "На моєму Mac", який ви можете зробити наступним чином ...
Я тільки що це дізнався сам і був приємно здивований обома порадами, тому подумав, що поділюсь ними тут.
Я отримав інформацію від цих корисних людей тут ... тож дякую вам, люди! ...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/