GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir le pid d'un processus et invoquer kill -9 dessus dans le script shell ?

Tout d'abord; "kill -9" devrait être un dernier recours.

Vous pouvez utiliser le kill commande pour envoyer différents signaux à un processus. Le signal par défaut envoyé par kill est 15 (appelé SIGTERM). Les processus captent généralement ce signal, nettoient puis se terminent. Lorsque vous envoyez le signal SIGKILL (-9 ) un processus n'a d'autre choix que de se terminer immédiatement. Cela peut entraîner des fichiers corrompus et laisser des fichiers d'état et des sockets ouverts qui pourraient causer des problèmes lorsque vous redémarrez le processus. Le -9 le signal ne peut pas être ignoré par un processus.

Voici comment je procéderais :

#!/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 devrait fonctionner s'il est installé sur votre système.

man pidof dit :

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

MODIFIER :

Pour votre application, vous pouvez utiliser command substitution :

kill -9 $(pidof gld_http)

Comme @arnefm l'a mentionné, kill -9 doit être utilisé en dernier recours.


Linux
  1. Comment obtenir la propre adresse IP et l'enregistrer dans une variable dans un script shell ?

  2. Comment trouver l'ID de processus (pid) d'un programme de terminal en cours d'exécution ?

  3. Comment obtenir le chemin d'un processus sous Unix / Linux

  4. Comment obtenir le PYTHONPATH en shell?

  5. Comment obtenir l'ID de processus pour tuer un processus nohup ?

Comment trouver l'ID de processus d'un programme et le tuer [Astuce rapide]

Comment trouver le PID et le PPID d'un processus sous Linux

Comment créer et exécuter un script shell dans Ubuntu 22.04

Comment tuer le script python avec le script bash

Comment obtenir uniquement l'utilisateur, le pid et la commande exécutée pour un processus spécifique ? (Ubuntu 11.10)

Comment obtenir le pid du processus qui vient de démarrer