2013-10-10 34 views
-1

所以我有一個二進制文件(binApp)被殺害如果要終止python腳本,killall的外殼等效什麼?

killall -9 binApp 

現在,而不是使用二進制文件,我創造了另一個python腳本(pyBinapp.py)執行相同的任務。我想殺死那個python任務,請問這個工作:

killall -9 pyBinApp 

另外,這是什麼意思?我找不到有關此號碼的任何文章。

+1

-9意味着殺死它沒有發送殺死信號的程序,並讓它關閉自己,並進行清理....不知道你的問題的其餘部分問... –

+0

我認爲你只是殺死python進程, 'python.exe'。 – BlackVegetable

+0

所以基本上我要修改「killall -9 binApp」來殺死等價的python腳本。當我說等價時,我的意思是,例如,binApp和python腳本都執行1 + 1的計算。 –

回答

2

-9是要發送的信號(而不是默認的SIGTERM) - SIGKILL。應用程序可以忽略SIGTERM,而SIGKILL不能。

我不在這種情況下使用killall是安全的,因爲你必須'killall python'這可能會殺死其他正在運行的東西。 'ps aux | grep python'來查看正在運行的內容。

編輯:其實 - 我只是測試它,只要你直接運行pyBinapp.py(它的可執行文件幷包含#!)而不是將它作爲參數傳遞給python(例如python pyBinapp.py),你可以殺死它與killall pyBinapp.py

+0

但是,如果我從shell運行pyBinApp.py,我需要將它作爲參數傳遞給python ...我應該如何直接運行它? –

+0

在pyBinApp.py的頂部(第一行)添加一個shebang'#!/ bin/usr/python'(類似的東西) –

+1

如果你使用'#!/ usr/bin/env python', shebang,Python程序員中的常見做法是什麼。 –

2

killall只匹配進程名稱(「python」在你的情況),所以它不會看到腳本名稱(「pyBinApp.py」),因爲它是一個python進程參數。

pgrep可以使用-f標誌(包括腳本文件名)與完整參數列表進行匹配。

如果你正在運行python pyBinApp.py,試試這個殺死它:

kill `pgrep -f pyBinApp.py` 

pgrep返回所有的PID匹配的模式,比kill上所有的人執行。

0

我用:

pgrep -f youAppFile.py | xargs kill -9 

pgrep命令返回的特定文件的PID,你只殺死特定的應用。

0

pkill可以直接使用,不需要對它進行清理和管道來殺死它。

pkill -f pyBinApp 

完全是你想要的。