Хотя launchd и термин LaunchDaemon звучат как демоны, это предпочтительный способ автоматизации всего сущего. яблоко говорит в своей документации,
Сценарии входа и выхода являются устаревшей технологией. В большинстве случаев вам следует использовать задания запуска, как описано в разделе Создание демонов запуска и агентов
сценарии входа в систему и выхода из системы - это сценарии, которые должны выполняться один раз, а затем завершаться. они запускаются через окно входа в систему.
Я думаю, что размещение вашей команды в файле launchd plist является правильным способом сделать это. Во-первых, вы можете исключить агенты запуска, потому что они всегда будут работать от имени пользователя. поскольку вы хотите, чтобы скрипт выполнялся от имени пользователя root, вы должны поместить его в /Library/LaunchDaemons
( /System/Library/LaunchDaemons
это также будет работать, но система ....) и добавить флаг, RunAtLoad
но не устанавливать его KeepAlive
(или установить для него что-то вроде crash, см. эту хорошую документацию ).
РЕДАКТИРОВАТЬ, потому что скрипт выполняется от имени пользователя root, вы можете опустить sudo
, другой вариант, создать скрипт и включить его в /etc/sudoers
( visudo
) с nopasswd
флагом и запустить его как пользователь