Intentando ejecutar samba con un LaunchAgent - el proceso no comienza con el sistema

0

He instalado Samba3 desde MacPorts. (siguiendo esta guía ) Para ejecutarla ejecuto sudo /opt/local/sbin/smbd -D && sudo /opt/local/sbin/nmbd -D en una ventana de Terminal y todo funciona bien.

He intentado crear un LaunchAgent para ejecutar samba con el sistema, en lugar de tener que invocarlo manualmente. Mi archivo plist se llama com.samba3.plist y consta de lo siguiente:

<!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>

Sin embargo, en el inicio del sistema no se está ejecutando samba.

    
pregunta Coxy 23.07.2011 - 08:19

1 respuesta

1

Veo varias cosas que necesitan ser arregladas:

  1. Esto debe instalarse como LaunchDaemon, no como LaunchAgent. La diferencia es que un agente se ejecuta dentro de una sesión de inicio de sesión de usuario, como el usuario; un demonio se ejecuta independientemente de quién está o no ha iniciado sesión, y generalmente se ejecuta como root (que necesita aquí).
  2. La lista ProgramArgument no está analizada por un shell, por lo que && no hace lo que quieres, solo se pasa como un argumento a smbd. Realmente deberías hacer dos elementos de lanzamiento, uno para smbd y otro para nmbd.
  3. El indicador -D de cada programa le indica que se desemaneice, es decir, se separe y se ejecute en segundo plano; Launchd espera que las cosas que lanza permanezcan conectadas para que puedan monitorearlas (y de hecho pensará que un programa se ha cerrado si se daemoniza). Elimine los indicadores -D y use -F en su lugar.

Además, si tiene Snow Leopard (instalado o disponible), eche un vistazo a los elementos de launchd que inician la versión del sistema de smbd y nmbd; son /System/Library/LaunchDaemons/smbd.plist y ... / nmbd.plist. Contienen algunos trucos adicionales que pueden ser útiles. En particular, nmbd está configurado para relanzarse automáticamente si la red está activa, y smbd solo se inicia a pedido cuando se recibe una conexión.

    
respondido por el Gordon Davisson 23.07.2011 - 16:18

Lea otras preguntas en las etiquetas