Daemon non può essere avviato da script di stoffa o su avvio – solo in modo interattivo

Ho uno script daemon in /etc/init.d che esegue una logging di pacchetti di background utilizzando il command tcpdump . Lo script inizia bene utilizzando una shell intertriggers usando il sudo /etc/init.d/packetlog start

Quando eseguo lo stesso command tramite il mio script di text (sotto) il command restituisce correttamente ma il process non è in esecuzione.

def startpacketlog(): sudo(r'/etc/init.d/packetlog start') 

Inoltre, il servizio non si avvia automaticamente all'avvio come mi aspettavo.

Alcuni suggerimenti per risolvere questo problema sarebbero apprezzati

Lo script è qui e viene modificato da questo originale

Aggiornamento Questo sembra essere un problema generale per avviare qualsiasi servizio su questo host utilizzando il tessuto. Quando si avvia il servizio apache2 ho lo stesso problema. Posso interrompere il servizio utilizzando il tessuto con successo.

Aggiornamento 2 Dopo aver nuovamente letto la documentazione e qualche sperimentazione, la seguente modifica ha risolto il problema. (Questo distriggers il pseudo-terminal remoto, qualunque cosa sia)

 def startpacketlog(): sudo(r'/etc/init.d/packetlog start',pty=False) 

  • Può usare capistrano o tessuto per configurare un server da zero?
  • Può essere utilizzato il tessuto per la distribuzione automatica da GitHub?
  • Il tessuto non lancia Nginx in remoto
  • Installazione del tessuto su CentOS 6
  • Tessuto usato per lavorare con chiavi ssh, ma non più
  • Aggiornamento rolling con burattino, materiale o tessuto
  • Se i web server di produzione utilizzano un host gateway per SSH nelle applicazioni di Django anche se Fabric non lo support?
  • Segnalazione dell'uso critico del disco con il tessuto
  • One Solution collect form web for “Daemon non può essere avviato da script di stoffa o su avvio – solo in modo interattivo”

    Quando richiami direttamente uno script init, il tuo ambiente corrente può "perdere" nello script init.

    Prova il tuo script init utilizzando gli strumenti di sistema appropriati:

     # Redhat/CentOS, and Ubuntu with upstart sudo service packetlog start # traditional method on Debian/Ubuntu sudo invoke-rc.d packetlog start 

    Questi assicurano che lo script inizia in un ambiente pulito, identico a quello in cui sarebbe in quando avviato da init.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.