J'ai la commande launchctl suivante en tant que fichier .plist. Il est chargé et configuré pour s'exécuter une fois par jour, mais il doit s'exécuter en tant que root et je ne sais pas comment le vérifier.
En outre, ce travail cron consiste essentiellement à placer des CD dans un répertoire et à exécuter une commande. Je suis sûr que launchd a une meilleure façon de spécifier le répertoire où il est censé exécuter la commande.
Comment puis-je savoir qu'il est exécuté en tant que root et existe-t-il une meilleure façon d'écrire cela?
<?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
requise pour l'installation d'un démon? Je veux dire, ne suffit-il pas de copier le fichier plist dans le chemin correspondant?Avez-vous essayé d'utiliser l'un des éditeurs launchd?
Pour vous assurer qu'il est exécuté en tant que root, je suis presque sûr que launchd exécutera les programmes en tant que root. Avez-vous déjà pensé à donner la propriété du script pour rooter en utilisant chmod? De cette façon, il ne s'exécutera que s'il est exécuté en tant que root. Vous devez ensuite vérifier qu'il fonctionne.
la source
Les listes de propriétés dans LaunchAgents fonctionnent également, mais vous devez charger les agents et les démons avec sudo:
Si le plist n'a pas de clé désactivée, il est chargé lors de la prochaine connexion ou redémarrage par défaut, et
-w
n'est pas nécessaire.Note technique TN2083: Démons et agents :
la source
Pour les Googleurs cherchant à exécuter spécifiquement un agent de lancement avec des privilèges root au lieu d'un démon de lancement , cela peut être fait par:
~/Library/LaunchAgents
sudo
via laProgramArguments
propriété dans votre plistNOPASSWD
option pour votre application dans/etc/resolvers.d
Pour plus de détails, consultez ceci et cette réponse.
la source
LaunchControl m'a rendu indolore à Yosemite. Il a une belle interface graphique par glisser-déposer pour vous aider à créer ou à modifier des services. C'était surprenant de voir tous les services fonctionner que je ne connaissais pas.
Pas
la source