У меня есть следующая команда launchctl как .plist файл. Это загружается и устанавливается работать один раз в день, но, это должно работать как корень, и я не уверен, как проверить это.
Кроме того, это задание крона в основном CD в каталог и выполнения команда. Я уверен, что launchd имеет лучший способ указать каталог, где он, как предполагается, выполняет команду.
Как я знаю, что это выполняется как корень и является там лучшим способом записать это?
<?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>
Что папка .plist
сохраненный в?
launchd
Демоны выполнений (/Library/LaunchDaemons
или /System/Library/LaunchDaemons
) как корень, и выполнит их независимо от того, зарегистрированы ли пользователи или нет. Агенты запуска (/Library/LaunchAgents/
или ~/Library/LaunchAgents/
) выполняются, когда пользователь зарегистрирован как тот пользователь. Вы не можете использовать setuid для изменения пользователя, запускающего скрипт на демонах.
Поскольку Вы захотите включить его /Library/LaunchDaemons
Вы захотите удостовериться, что Вы загружаете его в launchd
с правами администратора (например. sudo launchctl load -w /Library/LaunchDaemons/com.apple.samplelaunchdscript.plist
)
Выезд man launchd
для получения дополнительной информации.
Вы попытались использовать одного из launchd редакторов?
Для проверки это выполняется как корень, я - вполне уверенный launchd, запустит программы как корень. Когда-нибудь думайте о предоставлении владения сценария для укоренения с помощью chmod? Таким образом, это не будет работать, если не выполнено как корень. Необходимо затем проверить, что это работает.
sudo chown root:admin script_to_run_by_launchd