Pertama; "kill -9" harus menjadi pilihan terakhir.
Anda dapat menggunakan kill
perintah untuk mengirim sinyal yang berbeda ke suatu proses. Sinyal default dikirim oleh kill
adalah 15 (disebut SIGTERM). Proses biasanya menangkap sinyal ini, membersihkan dan kemudian keluar. Saat Anda mengirim sinyal SIGKILL (-9
) suatu proses tidak punya pilihan selain segera keluar. Ini dapat menyebabkan file rusak dan meninggalkan file status dan soket terbuka yang dapat menyebabkan masalah saat Anda memulai ulang proses. -9
sinyal tidak dapat diabaikan oleh suatu proses.
Inilah cara saya melakukannya:
#!/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
harus bekerja jika diinstal pada sistem Anda.
man pidof
mengatakan:
Pidof finds the process id’s (pids) of the named programs. It prints those id’s on the standard output.
EDIT:
Untuk aplikasi Anda, Anda dapat menggunakan command substitution
:
kill -9 $(pidof gld_http)
Seperti yang disebutkan @arnefm, kill -9
harus digunakan sebagai upaya terakhir.