Tentativo di eseguire samba con un LaunchAgent - il processo non inizierà con il sistema

0

Ho installato Samba3 da MacPorts. (seguendo questa guida ) Per eseguirlo eseguo sudo /opt/local/sbin/smbd -D && sudo /opt/local/sbin/nmbd -D in una finestra di Terminale e tutto funziona correttamente.

Ho tentato di creare un LaunchAgent per eseguire samba con il sistema, piuttosto che doverlo richiamare manualmente. Il mio file plist è chiamato com.samba3.plist ed è composto da quanto segue:

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

Tuttavia, all'avvio del sistema, samba non viene eseguito.

    
posta Coxy 23.07.2011 - 08:19
fonte

1 risposta

1

Vedo diverse cose che devono essere risolte:

  1. Questo dovrebbe essere installato come LaunchDaemon, non come LaunchAgent. La differenza è che un agente viene eseguito all'interno di una sessione di accesso utente, come utente; un demone gira indipendentemente da chi ha o non ha effettuato l'accesso e generalmente gira come root (di cui hai bisogno qui).
  2. L'elenco ProgramArgument non viene analizzato da una shell, quindi && non fa ciò che vuoi: è appena passato come argomento a smbd. Dovresti davvero creare due oggetti launchd, uno per smbd e uno per nmbd.
  3. Il flag -D per ogni programma dice di demonizzare, ovvero di staccarlo ed eseguirlo in background; launchd si aspetta che le cose che viene lanciate rimangano collegate in modo che possano monitorarle (e in effetti penseranno che un programma si sia chiuso se è stato demonizzato). Rimuovi i flag -D e utilizza -F invece.

Inoltre, se hai Snow Leopard (installato o disponibile) dai un'occhiata agli elementi di launchd che avviano la versione del sistema di smbd e nmbd; sono /System/Library/LaunchDaemons/smbd.plist e ... / nmbd.plist. Contengono alcuni trucchi aggiuntivi che potresti trovare utili. In particolare, nmbd è impostato per il rilancio automatico se la rete è attiva e lo smbd viene avviato solo su richiesta quando viene ricevuta una connessione.

    
risposta data 23.07.2011 - 16:18
fonte

Leggi altre domande sui tag