2012-05-14 11 views
5

que ejecuta un script de Perl en segundo plano con el siguiente comandoproceso Antecedentes Unix PARADO anormalmente

nohup perl myPerlSCript.pl >debug_log & 

Después de unos minutos me dio la condición de

[1] + Stopped

No esperaba que se detuviera, ni sé qué lo detuvo. ¿Cómo puedo depurar esto y descubrir por qué se detuvo? De hecho, estoy interesado en conocer los comandos de Unix para depurar.

Respuesta

1

¿Estás utilizando tcsh por casualidad? Tcsh en realidad viene con un comando nohup incorporado con el que he tenido muchos problemas anteriormente, viendo el comportamiento exacto que estás viendo.

Pruebe usar /usr/bin/nohup directamente si ese es el caso.

+0

No, no estoy usando tcsh. Es bash. – user703555

3

Hay varias maneras en que se puede detener un proceso que se ejecuta en segundo plano. Todos ellos implican una de estas señales:

  • SIGSTOP
  • SIGTSTP
  • SIGTTOU
  • SIGTTIN

SIGSTOP es grave. Es imbloqueable, no se puede perder, no se puede manejar. Detiene el proceso tan seguro como SIGKILL lo mataría. Los otros pueden ser manejados por el proceso de fondo para evitar detenerse.

  • Una señal fue enviada por otro proceso utilizando kill(2), o por el proceso a sí mismo usando raise(3) o kill(2)
  • El proceso intentó escribir en el terminal, y la opción de terminal tostop está activada (ver la salida de stty -a) Esto genera SIGTTOU.
  • El proceso intentó cambiar los modos de terminal con tcsetattr(3) o un equivalente ioctl. (Estos son los mismos modos que se muestran en stty). Esto genera SIGTTOU independientemente del estado actual de la bandera tostop.
  • El proceso intentó leer desde la terminal. Esto genera SIGTTIN.

Esta lista es probablemente muy incompleta.

+0

Gracias - ¿es posible ver cuál de estas señales causó el '[1] + detenido 'al menos? – Rup

+1

ejecutarlo en zsh en lugar de bash, le dará un mensaje más detallado. bash imprime "Detenido" para los 4 de ellos. –

Cuestiones relacionadas