GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere il pid di un processo e invocare kill -9 su di esso nello script della shell?

Prima di tutto; "kill -9" dovrebbe essere l'ultima risorsa.

Puoi usare lo kill comando per inviare diversi segnali a un processo. Il segnale predefinito inviato da kill è 15 (chiamato SIGTERM). I processi di solito catturano questo segnale, puliscono e poi escono. Quando invii il segnale SIGKILL (-9 ) un processo non ha altra scelta che uscire immediatamente. Ciò potrebbe causare file danneggiati e lasciare file di stato e socket aperti che potrebbero causare problemi al riavvio del processo. Il -9 il segnale non può essere ignorato da un processo.

Ecco come lo farei:

#!/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 dovrebbe funzionare se è installato sul tuo sistema.

man pidof dice:

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

MODIFICA:

Per la tua applicazione puoi usare command substitution :

kill -9 $(pidof gld_http)

Come menzionato da @arnefm, kill -9 dovrebbe essere usato come ultima risorsa.


Linux
  1. Come ottenere il proprio indirizzo IP e salvarlo in una variabile in uno script di shell?

  2. Come trovare l'ID di processo (pid) di un programma terminale in esecuzione?

  3. Come ottenere il nome dell'attuale ramo git in una variabile in uno script di shell?

  4. Ottenere il PID del processo in Shell Script

  5. Come ottenere il codice di uscita del processo generato nello script di shell atteso?

Come trovare l'ID di processo di un programma e ucciderlo [Suggerimento rapido]

Come trovare il PID e il PPID di un processo in Linux

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Come ottenere il PID in base al nome del processo?

Come uccidere lo script Python con lo script bash

Come ottenere il pid del processo appena avviato