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.