Zuerst; "kill -9" sollte der letzte Ausweg sein.
Sie können den kill
verwenden Befehl, um verschiedene Signale an einen Prozess zu senden. Das von kill
gesendete Standardsignal ist 15 (genannt SIGTERM). Prozesse fangen normalerweise dieses Signal ab, bereinigen und beenden sich dann. Wenn Sie das SIGKILL-Signal senden (-9
) hat ein Prozess keine andere Wahl, als sofort zu beenden. Dies kann zu beschädigten Dateien führen und Zustandsdateien hinterlassen und Sockets öffnen, die Probleme verursachen können, wenn Sie den Prozess neu starten. Die -9
Signal kann von einem Prozess nicht ignoriert werden.
So würde ich es machen:
#!/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
sollte funktionieren, wenn es auf Ihrem System installiert ist.
man pidof
sagt:
Pidof finds the process id’s (pids) of the named programs. It prints those id’s on the standard output.
BEARBEITEN:
Für Ihre Bewerbung können Sie command substitution
verwenden :
kill -9 $(pidof gld_http)
Wie @arnefm erwähnt hat, kill -9
sollte als letzter Ausweg verwendet werden.