Linux
我們如何編寫腳本來殺死 PID(如果 else 循環)?
我有一個包含多個 PID 的文件,如下所示。
#cat /scripts/pid.txt 12345 23456 34567 45678
我必須編寫一個腳本,它會從上面的文件中一個一個地讀取 PID 並殺死它們。如果腳本卡住,如果任何 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 之前,我們應該檢查文件是否具有該 PID,如果是則殺死它們,如果不退出。
謝謝桑托什 G。
在微不足道的層面上,我不完全確定為什麼這還不夠。
[[ -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"
文件或者不存在,或者是受信任的並且是最新的。