初めに; "kill -9" は最後の手段です。
kill
を使用できます プロセスにさまざまなシグナルを送信するコマンド。 kill
によって送信されるデフォルトのシグナル 15 です (SIGTERM と呼ばれます)。プロセスは通常、このシグナルをキャッチし、クリーンアップしてから終了します。 SIGKILL シグナルを送信すると (-9
) プロセスはただちに終了するしかありません。これにより、ファイルが破損し、プロセスを再起動したときに問題を引き起こす可能性のある状態ファイルと開いたソケットが残る可能性があります。 -9
プロセスはシグナルを無視できません。
これは私がそれを行う方法です:
#!/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
システムにインストールされていれば動作するはずです。
man pidof
言います:
Pidof finds the process id’s (pids) of the named programs. It prints those id’s on the standard output.
編集:
アプリケーションには command substitution
を使用できます :
kill -9 $(pidof gld_http)
@arnefm が述べたように、kill -9
最後の手段として使用してください。