1 votes

launchd n'exécute pas un script chargé au redémarrage

J'ai quelques problèmes avec launchd

J'ai fait ce plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>mosek.mountd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/etc/mountd</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Mon problème est le suivant. Quand je charge le script manuellement :

launchctl load /Library/LaunchDaemons/script.plist

Cela fonctionne comme un charme. Il se charge parfaitement, et exécute le script comme il se doit. Maintenant, quand je redémarre, il charge le script comme il le devrait, mais maintenant le script ne veut pas démarrer. Bien que lorsque je démarre le script

launchctl start mosek.mountd

ça marche. Donc il doit ignorer la touche "RunAtLoad", quand il charge le script au redémarrage. Pourquoi fait-il cela, et comment puis-je le réparer ?

Merci d'avance

edit:
    I forgot to mention that I also made root the owner of the file by running:
         chmod root /Library/LaunchDaemons/script.plist
    and it still wouldn't work

1voto

napcae Points 2031

Vérifiez vos autorisations. Le fichier script.plist doit ressembler à ceci

-rw-r--r-- 1 wheel 410 16 ...

De man launchctl

Notez que les fichiers de configuration par utilisateur (LaunchAgents) doivent appartenir à l'utilisateur qui les charge. Tous les démons du système (LaunchDaemons) doivent appartenir à Root. Les fichiers de configuration ne doivent pas pouvoir être écrits par un groupe ou par le monde entier.

0voto

Mon ami, je suggère quelques modifications au fichier plist :

Ajouter :

<key>Program</key>
     <string>/where/the/script/you/want/to/be/executed/resides</string>

Puis modifiez le ProgramArguments pour refléter le 'basename' du script -- son nom sans le chemin complet, ou 'dirname'. Je veux dire comme ceci, en supposant que '/usr/local/bin/mosek.mountd.sh' est le script que vous voulez exécuter :

<key>Program</key>
     <string>/usr/local/bin/mosek.mountd.sh</string>
<key>ProgramArguments</key>
     <array>
          <string>mosek.mountd.sh</string>
          <string>/etc/mountd</string>
     </array>

Cela devrait résoudre le problème. Faites-moi savoir si cela vous aide.

F.

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