ТЛ; ін: рідний процес запуску і менеджер використання OSX, в launchd
.
Для цього складіть launchctl
демон. Ви будете мати повний контроль над усіма аспектами сценарію. Ви можете бігти один раз або залишатися живим, як демон. У більшості випадків це шлях.
- Створіть
.plist
файл відповідно до інструкцій у документах Apple Dev тут або більш детально нижче.
- Місце в
~/Library/LaunchAgents
- Увійти (або запустити вручну через
launchctl load [filename.plist]
)
Більш докладної інформації про launchd
, Вікіпедія стаття досить добре і описує систему і її перевага по порівняно з іншими більш старими системами.
Ось конкретний файл плісту для запуску сценарію при вході .
Оновлено 2017/09/25 для OSX El Capitan та новіших версій (кредит Жозе Месіясу молодшого ):
<?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.user.loginscript</string>
<key>ProgramArguments</key>
<array><string>/path/to/executable/script.sh</string></array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Замініть <string>
післяпрограмний ключ на бажану команду (зауважте, що будь-який скрипт, на який посилається ця команда, повинен бути виконаним: chmod a+x /path/to/executable/script.sh
щоб переконатися, що він призначений для всіх користувачів).
Зберегти як ~/Library/LaunchAgents/com.user.loginscript.plist
Запустіть launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
і вийдіть / увійдіть, щоб протестувати (або тестувати безпосередньо, запустити launchctl start com.user.loginscript
)
Хвіст /var/log/system.log
для повідомлень про помилки.
Ключовим моментом є те, що це запускається запис, визначений для користувача, тому він буде виконуватися при вході для даного користувача. Демони запуску (поміщені в систему /Library/LaunchDaemons
) для системи запущені під час завантаження.
Якщо ви хочете, щоб сценарій запускався для входу для всіх користувачів, я вважаю, що LoginHook - це ваш єдиний варіант, і це, мабуть, причина його існування.