Kill
了解在文件夾下執行的所有腳本 PIDS 的正確方法是什麼
在 Linux 機器上的文件夾下
/home/testing/scripts
,我們有 234 個不同的腳本,用於進行健全性和測試作為
/home/testing/scripts/test.network.py /home/testing/scripts/test.hw.py /home/testing/scripts/test.load.sh . . .
在某些情況下,我們想殺死所有正在執行的腳本
所以為了找到正在執行的腳本 pids 我們這樣做
lsof /home/testing/scripts/
並殺死我們使用的所有pid:
for proccess in `lsof /home/testing/scripts/ | awk '{print $2}' | grep -v proccess`; do kill $proccess; done
假設我們只執行腳本 -
/home/testing/scripts/test.network.py
從
ps -ef |grep "testing/scripts"
我們得到root 5793 17546 84 09:20 ? 00:00:00 python3 -u /home/testing/scripts/test.network.py
所以
lsof
我們應該得到與lsof /home/testing/scripts/
現在,我只是想知道我的方法是否
for proccess in `lsof /home/testing/scripts/ | awk '{print $2}' | grep -v proccess`; do kill $proccess; done
足以殺死所有正在執行的腳本
/home/testing/scripts/
或者其他建議?
您可以稍微整理一下命令,但在我看來,它已經相當準確了。我會更緊密地匹配文件名以減少潛在的不匹配,並且我會確保每個候選 PID 實際上是數字,
lsof | awk -v p='^/home/testing/scripts/' '$9~p && $2+0 {print $2}' | sort -u | xargs echo kill
請注意在目錄分配給變數
^
的開頭。您還應該轉義可以解釋為正則表達式一部分的字元(即應該表示為、as等)awk``p``.``\.``*``\*
echo
當您準備好讓腳本真正執行終止操作時刪除。