中使用它的名稱殺死進程,但它可以殺死每個Python進程。在Linux(Python)
pkill python
但是,我不能這樣做:
pkill myscript.py
我也曾嘗試killall,但沒有運氣無論是。 我必須使用正則表達式嗎?
順便說一下,我想在一個Python腳本中使用import os來做到這一點。
中使用它的名稱殺死進程,但它可以殺死每個Python進程。在Linux(Python)
pkill python
但是,我不能這樣做:
pkill myscript.py
我也曾嘗試killall,但沒有運氣無論是。 我必須使用正則表達式嗎?
順便說一下,我想在一個Python腳本中使用import os來做到這一點。
你是否從你正在使用的腳本啓動Python子進程?如果是這樣,詳情請參閱this question。如果沒有,您可以使用pkill
的-f選項在Python進程的參數列表中搜索腳本名稱,但是仍有可能殺死您不想要的東西。有關更多信息,請參閱man page。
您需要查找進程ID(pid)。您可以使用命令「ps -A | grep NAME」,然後應用「kill -9 PID」。這些命令可以很容易地轉換成python。
試圖使用「名稱」(如在pkill中)可以產生多個匹配,從而產生意想不到的結果(至少在問題上面設置的上下文中)。
您是否能夠將該過程寫入文件pid
?
在Python你得到的PID這樣的:
import os
os.getpid()
殺戮的名字是方便,但有時也有不良的後果,正如你所看到的。
試試這個:
echo '#!/usr/bin/env python' > myscript
cat myscript.py >>myscript
chmod +x myscript
./myscript
當然,你將不得不修改代碼,殺了一個名爲「的MyScript」 過程在UNIX系統上,可執行文件包含開頭,告訴操作系統的幾個字節使用什麼二進制格式。如果前兩個字節是#!
,那麼操作系統認爲這實際上是一個可以被另一個程序執行的文本文件,操作系統加載另一個程序並傳遞給它,即文本文件。
在這種情況下,我可能會在頂行寫上#!/usr/bin/python
,但是如果您的python在/usr/local/bin
中,那麼它將無法工作。相反,我利用env
來讓它搜索Python的正常路徑。所有的UNIX系統都有env/usr/bin。有關更多信息,您可以輸入man env
。
sudo kill -9 `pgrep python`
此命令將殺死所有正在運行的進程蟒
怎麼就這麼從'pkill'不同? – hasen 2009-10-22 23:44:12
你不需要使用pid。您可以使用任何方法來識別流程殺手允許您使用的流程。所有* nix都在內部使用pid,但有時候人們希望殺死所有匹配模式的進程,而不僅僅是特定的pid。 – 2009-10-23 00:02:37
......但是最終你會想到一個pid:就像我上面提到的那樣,通過其他一些方式,有更多的改變來殺死非預期的過程。到過那裏。 – jldupont 2009-10-23 00:31:31