PIDを終了するスクリプトを作成する方法(If elseループ) [閉鎖]

PIDを終了するスクリプトを作成する方法(If elseループ) [閉鎖]

以下に示すように、複数の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"存在しないか、信頼できる最新のファイルであると仮定します。

おすすめ記事