0 votes

Tentative d'exécution de samba avec un LaunchAgent - le processus ne démarre pas avec le système

J'ai installé Samba3 à partir de MacPorts. (suivant ce guide ) Pour le faire fonctionner, j'exécute sudo /opt/local/sbin/smbd -D && sudo /opt/local/sbin/nmbd -D dans une fenêtre de Terminal et tout fonctionne correctement.

J'ai essayé de créer un LaunchAgent pour lancer samba avec le système, plutôt que d'avoir à l'invoquer manuellement. Mon fichier plist s'appelle com.samba3.plist et se compose des éléments suivants :

<!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.samba3</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/sbin/smbd</string>
<string>-D</string>
<string>&amp;&amp;</string>
<string>/opt/local/sbin/nmbd</string>
<string>-D</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

Cependant, au démarrage du système, samba n'est pas exécuté.

1voto

Gordon Davisson Points 30215

Je vois plusieurs choses qui doivent être corrigées :

  1. Il doit être installé en tant que LaunchDaemon, et non en tant que LaunchAgent. La différence est qu'un agent s'exécute à l'intérieur d'une session de connexion de l'utilisateur, en tant qu'utilisateur ; un démon s'exécute indépendamment de qui est ou n'est pas connecté, et s'exécute généralement en tant que Root (ce dont vous avez besoin ici).
  2. La liste ProgramArgument n'est pas analysée par un shell, donc && ne fait pas ce que vous voulez -- il est juste passé comme argument à smbd. Vous devriez vraiment créer deux éléments launchd, un pour smbd et un pour nmbd.
  3. En -D à chaque programme lui indique de se démoniser, c'est-à-dire de se détacher et de s'exécuter en arrière-plan ; launchd s'attend à ce que les choses qu'il lance restent connectées afin de pouvoir les surveiller (et en fait, il pensera qu'un programme s'est arrêté s'il se démonise). Supprimez l'option -D et utiliser les drapeaux -F au lieu de cela.

De plus, si vous avez Snow Leopard (installé ou disponible), jetez un coup d'œil aux éléments launchd qui démarrent la version système de smbd et nmbd ; il s'agit de /System/Library/LaunchDaemons/smbd.plist et .../nmbd.plist. Elles contiennent quelques astuces supplémentaires qui peuvent s'avérer utiles. En particulier, nmbd est configuré pour se relancer automatiquement si le réseau est en place, et smbd n'est lancé à la demande que lorsqu'une connexion est reçue.

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