He comenzado un programa en Linux usando &
y disown
.
Deseo ver si todavía se está ejecutando y posiblemente matarlo.
Comencé el proceso con comandos como estos:
(env)bash-4.2$ python manage.py update_rollups &
[1] 29144
(env)bash-4.2$ disown
Ya no puedo encontrarlo ps aux
ni matarlo en función del pid 29144
.
Quiero saber si el proceso aún se está ejecutando ( init
¿ bajo ?).
¡Espero que puedas ayudar!
Respuestas:
En breve
Con
&
ydisown
no cambia el PID [ 1 ] del proceso.Si no lo ve en la
ps -p <YOURPID>
salida, ya no se está ejecutando.Puede verificarlo con un
echo $?
[ 2 ] adicional después del comandops
(okill
), verificando si el programa sale con un código de salida diferente de0
(típicamente1
).Comprender tus comandos.
Fondo : cuando ejecuta el comando con la final,
&
lo envía en segundo plano.Esto significa que:
[1]
y puede referirse a él como%1
; (pruebe el comandojobs
).fg
ybg
.Es (todavía) "propiedad" del shell (vinculado al padre): si el shell recibe una
SIGHUP
señal, también enviará unaSIGHUP
señal al proceso.Desconocido : con el comando
disown
, elimina el trabajo de la lista de trabajos del shell, pero no cambia su PID.Tenga en cuenta el mismo PPID (el shell todavía existe).
Ahora matamos al caparazón.
Hay otra
PPID
, la5339
, que con otra invocación deps
,ps -p 5339
descubrirá que es unainit
instancia:pstree
: una manera más rápida.Puedes ver con
pstree
más rapidez.Antes de
disown
y matar a los comandos bash :Después de
disown
y matar a la fiesta :Nota: por supuesto, todos los PID en su caso serán diferentes ...
fuente
Si no está dentro
ps auxf
, entonces no se está ejecutando. Si ejecutakill 29144
y obtiene "No hay tal proceso", eso también significa que el proceso no se está ejecutando.fuente
Cada proceso tiene una carpeta en el
/proc
sistema de archivos con ellapid
. Si la carpeta no existe, el proceso no se está ejecutando.Por ejemplo
puedes ver el proceso
commandline
salida de ejemplo:
/usr/sbin/smbd
o verifique el estado del archivo de proceso
salida de ejemplo:
fuente