GNU/Linux >> Znalost Linux >  >> Linux

Jak získat pid procesu a vyvolat na něj kill -9 ve skriptu shellu?

Nejdříve; "kill -9" by měla být poslední možnost.

Můžete použít kill příkaz k odeslání různých signálů do procesu. Výchozí signál odeslaný kill je 15 (tzv. SIGTERM). Procesy obvykle tento signál zachytí, vyčistí a poté skončí. Když odešlete signál SIGKILL (-9 ) proces nemá jinou možnost než okamžitě ukončit. To může způsobit poškození souborů a ponechání stavových souborů a otevřených soketů, které mohou způsobit problémy při restartování procesu. -9 signál nemůže být procesem ignorován.

Udělal bych to takto:

#!/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 by měl fungovat, pokud je nainstalován ve vašem systému.

man pidof říká:

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

EDIT:

Pro vaši aplikaci můžete použít command substitution :

kill -9 $(pidof gld_http)

Jak zmínil @arnefm, kill -9 by měl být použit jako poslední možnost.


Linux
  1. Jak získat název distribuce a číslo verze v jednoduchém skriptu Shell?

  2. Jak získat externí IP adresu ve skriptu Shell?

  3. Jak získat vlastní IP adresu a uložit ji do proměnné ve skriptu Shell?

  1. Jak zjistit ID procesu (pid) běžícího terminálového programu?

  2. Získání PID procesu ve skriptu Shell

  3. Jak získat PID podle názvu procesu?

  1. Jak získám cestu k procesu v Unixu / Linuxu

  2. Jak získat název aktuální větve git do proměnné v shell skriptu?

  3. Jak získat PID právě zahájeného procesu