1 votes

Comment planifier l'exécution d'une commande Root à intervalles réguliers ?

J'ai besoin d'exécuter un script dans des intervalles qui nécessitent un utilisateur Root pour s'exécuter. J'ai créé un plist qui appellera un script en ~/bin/test.sh .

user@MBP:~$ ls -lah ~/bin/
-rw-r--r--   1 root       staff   566B Feb  6 23:44 test.plist
-rwxr-xr-x   1 root       staff    51B Feb  6 23:38 test.sh

En voici le contenu :

user@MBP:~$ cat ~/bin/test.plist
<?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>com.test.script</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>/Users/user/bin/test.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>30</integer>
</dict>
</plist>

user@MBP:~$ cat ~/bin/test.sh
#!/bin/sh
cp /Users/user/bin/dummy.txt /etc

Ensuite, j'ai fait un lien symbolique avec la liste de diffusion dans /Library/LaunchAgents .

user@MBP:~$ ls -lah /Library/LaunchAgents/
lrwxr-xr-x   1 root  wheel    31B Feb  5 06:28 com.test.script.plist -> /Users/user/bin/test.plist

Mais tout cela ne fonctionne pas. Quand je regarde /var/logs/system.log ça dit juste :

Feb  7 14:42:12 MBP com.apple.launchd.peruser.501[242] (com.test.script`[925]): Exited with code: 1

1voto

Tyler Mumford Points 720

La page de manuel de launchd.plist décrit un UserName qui est nécessaire lorsque vous exécutez le travail en tant que Root. On peut supposer que la valeur doit être "Root".

Je ne suis pas un gourou, mais cela semble être la seule chose qui vous manque - à moins que les agents de lancement ne puissent pas être liés par un lien symbolique.

0voto

nuc Points 4736

Ainsi, selon cette réponse de SuperUser vous devez exécuter launchctl en tant que sudo afin de conserver les permissions.

sudo load -w /Library/LaunchDaemons/com.apple.samplelaunchdscript.plist

0voto

Les listes de propriétés dans LaunchAgents fonctionnent également, mais vous devez charger les agents et les démons avec sudo :

sudo chown root ~/bin/test.plist
sudo launchctl load /Library/LaunchAgents/test.plist

Si la plist n'a pas de clé désactivée, elle est chargée automatiquement lors de la prochaine connexion ou du prochain redémarrage, et -w n'est pas nécessaire.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X