2012-05-14 13 views
5

ho eseguito uno script perl in background utilizzando il seguente comandoprocesso Sfondo Unix arrestato in modo anomalo

nohup perl myPerlSCript.pl >debug_log & 

Dopo qualche minuto ho ottenuto lo status di

[1] + Stopped

Non mi aspettavo che si fermasse, né so cosa l'ha fermato. Come posso eseguire il debug di questo e scoprire perché si è fermato? In realtà sono interessato a conoscere i comandi unix per eseguire il debug.

risposta

1

Stai usando tcsh per caso? Tcsh ha in realtà un comando nohup incorporato che ho avuto un sacco di problemi in passato, vedendo il comportamento esatto che stai vedendo.

Provare a utilizzare /usr/bin/nohup direttamente se questo è il caso.

+0

No, non sto usando tcsh. È bash. – user703555

3

Ci sono diversi modi in cui un processo in esecuzione in background può essere fermato. Tutti loro coinvolgono uno di questi segnali:

  • SIGSTOP
  • SIGTSTP
  • SIGTTOU
  • SIGTTIN

SIGSTOP è grave. È sbloccabile, non controllabile, non è gestibile. Arresta il processo con la stessa certezza che lo SIGKILL lo ucciderebbe. Gli altri possono essere gestiti dal processo in background per impedire l'arresto.

  • Un segnale è stato inviato da un altro processo usando kill(2), o mediante il processo a se stessa utilizzando raise(3) o kill(2)
  • Il processo ha tentato di scrivere al terminale, e l'opzione terminale tostop abilitato (vedi uscita stty -a). Questo genera SIGTTOU.
  • Il processo ha tentato di modificare le modalità del terminale con tcsetattr(3) o un valore equivalente ioctl. (Queste sono le stesse modalità mostrate da stty). Ciò genera SIGTTOU indipendentemente dallo stato corrente del flag tostop.
  • Il processo ha tentato di leggere dal terminale. Questo genera SIGTTIN.

Questo elenco è probabilmente molto incompleto.

+0

Grazie - è possibile vedere quale di questi segnali ha causato almeno il '[1] + Stopped'? – Rup

+1

eseguilo in zsh invece che bash, ti darà un messaggio più dettagliato. bash stampa "Stopped" per tutti e 4 di loro. –

Problemi correlati