У меня есть следующая команда launchctl как файл .plist. Он загружен и настроен на запуск один раз в день, но должен запускаться от имени пользователя root, и я не уверен, как это проверить.
Кроме того, это задание cron в основном копирует в каталог и запускает команду. Я уверен, что у launchd есть лучший способ указать каталог, в котором он должен запускать команду.
Как я знаю, что он запускается от имени root и есть ли лучший способ написать это?
<?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>Label</key>
<string>dev.project.frontpage.feedparser</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Users/eman/src/project/trunk/includes/;</string>
<string>./feed-parser.php</string>
<string>-c</string>
<string>./feed-parser-config.xml</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
launchctl
требуется ли запуск для установки демона? Я имею в виду, не достаточно ли скопировать файл plist в соответствующий путь?Вы пытались использовать один из запущенных редакторов?
Чтобы убедиться, что он запускается с правами root, я уверен, что launchd запустит программы с правами root. Вы когда-нибудь задумывались о том, чтобы передать права собственности на скрипт руту с помощью chmod? Таким образом, он не будет работать, пока не будет запущен от имени пользователя root. Затем вам нужно убедиться, что он работает.
источник
Списки свойств в LaunchAgents также работают, но вы должны загрузить как агентов, так и демонов с помощью sudo:
Если у plist нет отключенного ключа, он загружается при следующем входе в систему или перезапускается по умолчанию, и в
-w
этом нет необходимости.Техническое примечание TN2083: Демоны и агенты :
источник
Для Google, желающих специально запустить Launch Agent с привилегиями root, например, от Launch Daemon , это можно сделать следующим образом:
~/Library/LaunchAgents
sudo
помощьюProgramArguments
свойства в вашем спискеNOPASSWD
опцию для вашего приложения в/etc/resolvers.d
Для более подробной информации см. Этот и этот ответ.
источник
LaunchControl сделал это безболезненным для меня в Йосемити. Он имеет приятный графический интерфейс перетаскивания, чтобы помочь вам создавать или редактировать сервисы. Было удивительно видеть все работающие службы, о которых я не знал.
меры
источник