![comprobar el proceso en ejecución](https://rvso.com/image/23957/comprobar%20el%20proceso%20en%20ejecuci%C3%B3n.png)
Se me pide que verifique y cierre los procesos con los que no estoy familiarizado. Entonces, cuando estoy ls
en la carpeta bin, veo múltiples procesos .sh
. Pero quiero saber qué proceso está asociado con qué proceso de Tomcat.
¿Hay alguna manera fácil de averiguarlo?
Ejemplo startmyprocess1.sh
, pero cuando lo hago ps -ef | grep startmyprocess1
no devuelve el proceso en ejecución.
Pero en realidad el nombre del proceso Tomcat en ejecución es myprocess
, así que cuando lo hago ps -ef | grep myprocess
, puedo ver el proceso en ejecución. Para saber eso tengo que preguntarle al responsable.
Entonces, los nombres son diferentes. Si es así, necesito preguntarle varias veces. ¿Alguna mejor manera de resolver esto?
Respuesta1
prueba este... (no probado)
ps -aux | grep "yourprocess"
Por ejemplo,
ps -aux | grep "httpd"
Respuesta2
Iniciar myprocess desde startmyprocess.sh nononombre el proceso después del script de shell subyacente, es por eso que ps -ef | grep startmyprocess1
no devuelve un resultado.
Esta es también la razón por la que muchos procesos, especialmente demonios, escriben su pid en un archivo para que pueda consultar fácilmente su proceso. Esto se puede hacer con:
#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid
o puedes consultar $!
cuál contiene el último pid:
#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid
y consultar/enumerar el proceso por su pid:
ps --pid $PID
Respuesta3
Creo que un software como "top" hará un gran trabajo.
Tipo:
top
o
htop
Respuesta4
La respuesta de @invert ha explicado mucho, el script de shell simplemente ejecuta comandos dentro de él. Lo que eso significa es que no obtendrá el nombre de su script de shell en la salida de top
o htop
, que simplemente imprime el /proc/$PID/cmdline de cada rutina dentro del script de shell.
Además de usar echo $!
el comando after para obtener el PID de lo que deseas. Me gustaría usar pgrep
el comando cuando lo necesite (o pkill si desea eliminarlo).
pgrep, pkill: busca o señala procesos según el nombre y otros atributos
El pgrep simplemente recoge sus argumentos a través de /proc/*/cmdline y genera los PID coincidentes. El pkill es compatible con kill, por lo que puede pkill fácilmente cualquier rutina con el cmdline.