GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo obtener la identificación del proceso para eliminar un proceso nohup?

trabajos -l debería darle el pid para la lista de procesos nohup. mátelos (-9) suavemente.;)


Estoy usando red hat linux en un servidor VPS (ya través de SSH - masilla), para mí funcionó lo siguiente:

Primero, lista todos los procesos en ejecución:

ps -ef

Luego, en la primera columna, encuentra su nombre de usuario; Lo encontré las siguientes tres veces:

  • Uno fue la conexión SSH
  • La segunda fue una conexión FTP
  • El último fue el proceso nohup

Luego en la segunda columna puedes encontrar el PID del proceso nohup y solo escribes:

kill PID 

(reemplazando el PID con el PID del proceso nohup, por supuesto)

¡Y eso es todo!

Espero que esta respuesta sea útil para alguien. También soy muy nuevo en bash y SSH, pero encontré el 95 % del conocimiento que necesito aquí :)


supongamos que estoy ejecutando un script Ruby en segundo plano con el siguiente comando

nohup ruby script.rb &

entonces puedo obtener el pid del proceso en segundo plano 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 puede eliminar fácilmente el proceso usando el comando de eliminación

kill 25938

Al usar nohup y pones 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 tarde para eliminar el proceso si es necesario, a través de kill PID o kill -9 PID (si necesitas forzar la muerte). Alternativamente, puede encontrar el PID más adelante por ps -ef | grep "command name" y localice el PID desde allí. Tenga en cuenta que nohup palabra clave/comando en sí no aparece en el ps salida para el comando en cuestión.

Si usa un script, podría hacer algo como esto en el script:

nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt

Esto ejecutará my_command guardando toda la salida en my.log (en un guión, $! 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 enrute 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 como error estándar en nuestro my.log archivo (que proviene de la salida estándar). Consulte Redirección de E/S para obtener más detalles sobre cómo manejar la redirección de E/S con el shell.

Si el comando envía resultados de forma regular, puede verificar el resultado de vez en cuando con tail my.log , o si quieres seguirlo "en vivo" puedes usar tail -f my.log . Finalmente, si necesita finalizar el proceso, puede hacerlo a través de:

kill -9 `cat save_pid.txt`
rm save_pid.txt

Linux
  1. ¿Cómo encontrar el ID de proceso (pid) de un programa de terminal en ejecución?

  2. ¿Cómo puedo matar un proceso por nombre en lugar de PID?

  3. ¿Cómo pasar los argumentos de la línea de comando a un proceso en ejecución en sistemas Unix/Linux?

  4. Cómo matar el proceso zombie

  5. Cómo encontrar el archivo .pid para un proceso dado

Cómo matar un proceso en Linux

Cómo encontrar el ID de proceso de un programa y eliminarlo [Consejo rápido]

Cómo MATAR un proceso en Linux

Cómo matar o terminar un proceso de Linux:la guía definitiva

Cómo encontrar el PID y PPID de un proceso en Linux

Cómo obtener pid del proceso recién iniciado