GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo obtener el pid de un proceso e invocar kill -9 en el script de shell?

Ante todo; "matar -9" debería ser el último recurso.

Puedes usar el kill comando para enviar diferentes señales a un proceso. La señal predeterminada enviada por kill es 15 (llamado SIGTERM). Los procesos generalmente captan esta señal, la limpian y luego salen. Cuando envías la señal SIGKILL (-9 ) un proceso no tiene más remedio que salir inmediatamente. Esto puede causar archivos corruptos y dejar archivos de estado y sockets abiertos que pueden causar problemas al reiniciar el proceso. El -9 la señal no puede ser ignorada por un proceso.

Así es como yo lo haría:

#!/bin/bash

# Getting the PID of the process
PID=`pgrep gld_http`

# Number of seconds to wait before using "kill -9"
WAIT_SECONDS=10

# Counter to keep count of how many seconds have passed
count=0

while kill $PID > /dev/null
do
    # Wait for one second
    sleep 1
    # Increment the second counter
    ((count++))

    # Has the process been killed? If so, exit the loop.
    if ! ps -p $PID > /dev/null ; then
        break
    fi

    # Have we exceeded $WAIT_SECONDS? If so, kill the process with "kill -9"
    # and exit the loop
    if [ $count -gt $WAIT_SECONDS ]; then
        kill -9 $PID
        break
    fi
done
echo "Process has been killed after $count seconds."

pidof gld_http debería funcionar si está instalado en su sistema.

man pidof dice:

Pidof  finds  the process id’s (pids) of the named programs. It prints those id’s on the standard output.

EDITAR:

Para su aplicación puede usar command substitution :

kill -9 $(pidof gld_http)

Como mencionó @arnefm, kill -9 debe utilizarse como último recurso.


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

  2. ¿Cómo obtengo la ruta de un proceso en Unix/Linux?

  3. ¿Cómo obtener el PYTHONPATH en shell?

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

  5. Cómo obtener PID del proceso secundario bifurcado en el script de shell

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

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

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

¿Cómo obtener el código de salida del proceso generado en el script de shell esperado?

Cómo matar el script de python con el script bash

¿Cómo hacer que solo el usuario, el pid y el comando se ejecuten para un proceso específico? (Ubuntu 11.10)