Tengo el siguiente comando launchctl como un archivo .plist. Está cargado y configurado para ejecutarse una vez al día, pero necesita ejecutarse como root y no estoy seguro de cómo verificar esto.
Además, este trabajo cron básicamente los CD en un directorio y ejecuta un comando. Estoy seguro de que launchd tiene una mejor manera de especificar el directorio donde se supone que debe ejecutar el comando.
¿Cómo sé que se ejecuta como root y hay una mejor manera de escribir esto?
<?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
requiere ejecutar para instalar un demonio? Quiero decir, ¿no es suficiente copiar el archivo plist en la ruta correspondiente?¿Has intentado usar uno de los editores de launchd?
Para asegurarme de que se ejecute como root, estoy bastante seguro de que launchd ejecutará los programas como root. ¿Alguna vez pensó en dar la propiedad del script a la raíz usando chmod? De esta manera, no se ejecutará a menos que se ejecute como root. Luego debe verificar que se ejecuta.
fuente
Las listas de propiedades en LaunchAgents también funcionan, pero debe cargar tanto los agentes como los demonios con sudo:
Si el plist no tiene una clave deshabilitada, se carga en el siguiente inicio de sesión o se reinicia por defecto, y
-w
no es necesario.Nota técnica TN2083: Demonios y agentes :
fuente
Para los Googlers que buscan ejecutar específicamente un Agente de lanzamiento con privilegios de root en lugar de un Daemon de lanzamiento , se puede hacer de la siguiente manera:
~/Library/LaunchAgents
sudo
través de laProgramArguments
propiedad en su listaNOPASSWD
opción para su aplicación en/etc/resolvers.d
Para más detalles, vea esto y esta respuesta.
fuente
LaunchControl me hizo sin dolor en Yosemite. Tiene una buena GUI de arrastrar y soltar para ayudarlo a crear o editar servicios. Fue sorprendente ver todos los servicios en ejecución que no conocía.
Pasos
fuente