linux - como detener nohup
¿Cómo obtener la ID del proceso para matar un proceso nohup? (8)
Estoy ejecutando un proceso nohup en el servidor. Cuando trato de matarlo, la consola de mi masilla se cierra.
así es como trato de encontrar el ID del proceso:
ps -ef |grep nohup
este es el comando para matar
kill -9 1787 787
Cuando usa nohup
y pone la tarea en segundo plano, el operador de fondo ( &
) le dará el PID en el símbolo del sistema. Si su plan es administrar manualmente el proceso, puede guardar ese PID y usarlo más adelante para matar el proceso si es necesario, mediante kill PID
o kill -9 PID
(si necesita forzar kill). Alternativamente, puede encontrar el PID más tarde por ps -ef | grep "command name"
ps -ef | grep "command name"
y localiza el PID desde allí. Tenga en cuenta que la palabra clave / comando nohup
sí no aparece en la salida ps
del comando en cuestión.
Si usaste un script, podrías hacer algo como:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
Esto ejecutará my_command
guardando todos los resultados en my.log
(en un script, $!
Representa el PID del último proceso ejecutado). El 2
es el descriptor de archivo para el error estándar ( stderr
) y 2>&1
le dice al shell que dirija la salida de error estándar a la salida estándar (descriptor de archivo 1
). Requiere &1
para que el shell sepa que es un descriptor de archivo en ese contexto en lugar de solo un archivo llamado 1
. El 2>&1
es necesario para capturar cualquier mensaje de error que normalmente se escribe en el error estándar en nuestro archivo my.log
(que proviene de la salida estándar). Consulte Redirección de E / S para obtener más información sobre el manejo de la redirección de E / S con el shell.
Si el comando envía resultados regularmente, puede verificar el resultado ocasionalmente con tail my.log
, o si desea seguirlo "en vivo" puede usar tail -f my.log
. Finalmente, si necesita matar el proceso, puede hacerlo a través de:
kill -9 `cat save_pid.txt`
rm save_pid.txt
Esto funciona en Ubuntu
Escriba esto para descubrir el PID
ps aux | grep java
Se mostrará todo el proceso de ejecución con respecto a Java
En mi caso es
johnjoe 3315 9.1 4.0 1465240 335728 ? Sl 09:42 3:19 java -jar batch.jar
Ahora matalo, kill -9 3315
El proceso zombie finalmente se detuvo.
Estoy usando red hat linux en un servidor VPS (y a través de SSH - masilla), para mí lo siguiente funcionó:
Primero, enumera todos los procesos en ejecución:
ps -ef
Luego, en la primera columna, encontrará su nombre de usuario; Lo encontré las siguientes tres veces:
- Una era la conexión SSH
- El segundo era una conexión FTP
- El último fue el proceso nohup
Luego, en la segunda columna, puede encontrar el PID del proceso nohup y solo debe escribir:
kill PID
(reemplazando el PID por el PID del proceso nohup, por supuesto)
¡Y eso es todo!
Espero que esta respuesta sea útil para alguien que también soy muy nuevo en bash y SSH, pero encontré el 95% del conocimiento que necesito aquí :)
Inicié el servidor django con el siguiente comando.
nohup manage.py runserver <localhost:port>
Esto funciona en CentOS:
:~ ns$netstat -ntlp
:~ ns$kill -9 PID
Supongamos que está ejecutando un programa Java con nohup, puede obtener el ID del proceso Java mediante
`ps aux | grep java`
salida
xxxxx 9643 0.0 0.0 14232 968 pts/2
entonces puedes matar el proceso tecleando
sudo kill 9643
o digamos que necesita matar a todos los procesos de Java, entonces solo use
sudo killall java
este comando mata a todos los procesadores java. puedes usar esto con el proceso. solo da el nombre del proceso al final del comando
sudo killall {processName}
Tu podrías intentar
kill -9 `pgrep [command name]`
supongo que estoy ejecutando script de ruby en el fondo con el comando a continuación
nohup ruby script.rb &
entonces puedo obtener el proceso pid de fondo anterior especificando el nombre del comando. En mi caso, el comando es ruby.
ps -ef | grep ruby
salida
ubuntu 25938 25742 0 05:16 pts/0 00:00:00 ruby test.rb
Ahora puedes matar fácilmente el proceso usando el comando kill
kill 25938
jobs -l debería darle el pid para la lista de procesos nohup. matarlos (-9) suavemente. ;)