以下に示すように、複数のPIDを含むファイルがあります。
#cat /scripts/pid.txt
12345
23456
34567
45678
上記のファイルからPIDを1つずつ読み、終了するスクリプトを作成する必要があります。スクリプトが中断されてPIDが終了しない場合は、スクリプトを終了して次のPID終了を続行する必要があります。
これは私のスクリプトです。
filename_java=/scripts/pid.txt
cat ${filename_java} | while read line
do
echo "The $line PID is still running" >>
$TC_LOGS/killing_pid_aftershutdown_$DATE.txt
echo "killing the PID $line " >>
$TC_LOGS/killing_pid_aftershutdown_java_$DATE.txt
kill -15 $line && sleep 5
mail -s "Admin console is shutdown gracefully" -r $LOGNAME@$HOSTNAME <email
id> < /dev/null
done
PIDを1つずつ読み込む前に、ファイルにそのPIDがあることを確認する必要があります。その場合、終了しない場合は、そのPIDを終了して終了する必要があります。
Santosh Gさん、ありがとうございます。
ベストアンサー1
マイナーなレベルでは、これがなぜ十分でないのか完全には確信していません。
[[ -s "/scripts/pid_$DATE.txt" ]] && kill $(cat "/scripts/pid_$DATE.txt")
それとも最初の人を殺し、残りはそのまま残すべきですか?
if [[ -s "/scripts/pid_$DATE.txt" ]]
then
while IFS= read -r pid
do
kill "$pid" && break
done <"$scripts/pid_$DATE.txt"
fi
どちらの場合も、スクリプトにターゲットプロセスにシグナルを送信するのに十分な権限があり、ファイルが"$scripts/pid_$DATE.txt"
存在しないか、信頼できる最新のファイルであると仮定します。