Cuando intento cerrar una pestaña en Gnome Terminal, dice:
¿Cerrar esta terminal? Todavía hay un proceso ejecutándose en este terminal. Cerrar la terminal lo matará.
¿Cómo puedo saber qué sigue funcionando? Tenga en cuenta que no hay nada en la salida de jobs
. Gracias.
screen
,tmux
,script
,ssh
,mc
y convertido a los paneles de apagado, o simplemente otro proyectil por ejemplo, escribiendobash
, o algo a lo largo de estas líneas. Presione Ctrl + D o escribaexit
para salir de su shell, verá dónde termina.exit
, la pestaña del terminal gnome no se cierra.exit
probablemente lo cerrará entonces. @egmont puedes mover esto a una respuesta por favor.Respuestas:
Selecciona todos los procesos asociados con el terminal.
fuente
nohup
comando se desconectan del terminal, por lo que no bloquee su cierre. Pero todavía están listados con este comando.Puede echar un vistazo a los procesos que enumeran el PID de su shell como padre. Como puede saber o no, podemos especificar el
ps
formatoAquí, obtenemos el PID de la shell desde una variable especial
$$
aSHELLPID
, que luego puede ser utilizada por awk en la subshell de la tubería. Esencialmente, solo estamos enumerando los procesos en forma NOMBRE, PID, PID principal y filtramos solo aquellos que tienen el PID apropiado en la última columna.fuente
Si inició algún proceso en la terminal (por ejemplo, gedit), el ID de proceso (PID) (de bash) y el ID de proceso primario (PPID) (de gedit) para estos dos procesos serán los mismos. Esto se puede ver en la salida de
mando. Para hacerlo más legible, primero "canalice" la salida para
grep
encontrar el PID de todos los procesos "bash" que se están ejecutando actualmente y luego "canalizar" nuevamenteawk
. Losawk
selecciona sólo el PID y campos de nombre de proceso (campo 2 y 8) y salidas a la pantalla.ps -ef | grep bash | awk '{print $2 ": " $8}'
El número en la salida es PID. Lo usará para encontrar qué proceso se inició en la terminal que tiene ese PID. Tenga en cuenta que puede haber más de una línea de salida si tiene más de un terminal abierto. Ahora, para encontrar los procesos "secundarios" (si los hay) de esas sesiones de terminal, podemos usar este comando:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Debe ingresar el número PID en lugar de EnterPID en el último comando. Si hay más de un PID para "bash", debe probarlos todos.
El último comando solo busca el resultado
ps -ef
y busca si PID (que ha encontrado en el comando anterior) y PPID son los mismos para cualquier proceso.Más información:
hombre ps
hombre awk
fuente
Puedes usar
htop
. En Ubuntu 16.04 (y superior), puede instalarlo simplemente escribiendosudo apt-get install htop
.También puedes usar
top
.fuente
htop
?