2013-12-14 58 views
1

我環顧四周,沒有解決方案爲我工作。 我想用命令行來終止perl腳本。如何通過名稱來終止程序/腳本?

例如:

killall myscript.pl 

我在尋找一個類似的解決方案,所有的幫助表示讚賞。謝謝。

+0

爲什麼killall不工作?輸出是什麼?你能用'ps'來展示你想殺死的進程嗎? – micromoses

+1

也許使用'pkill' ..... –

回答

4

你可以試試pkill,它是當今大多數發行版的標準。

例如,

pkill -f myscript.pl 

如果你想要一個更便攜的解決方案,那麼你可以grep的名稱,提取PID,並殺死:

kill $(ps xa | grep [m]yscript | awk '{ print $1; exit }') 
+0

我不認爲這樣會工作,因爲'ps'會看到'perl/my/path/myscript.pl' – ldrumm

+0

剛試過這個。似乎沒有工作。 – user3101398

+0

您可以隨時使用-f開關,我編輯了原始答案。請參閱http://stackoverflow.com/questions/8987037/how-to-kill-all-processes-with-a-given-partial-name – tvm

2

在Perl中,分配給變量$0應該改變的名稱進程列表。這將影響ps命令的輸出,其中killallpkill依賴於該命令。

killall myscript.pl不會沒有額外-f參數@tvm工作建議,因爲腳本是另一個程序(Perl解釋器)內運行,這樣的過程將被列爲perl /path/to/myscript.pl

你可以嘗試pkill perl,但能殺死所有perl解釋器都表示當前用戶有權殺死所以它可能是危險的。

去了解這個程序,最好的辦法是分配給$0變量

#!/usr/bin/perl 
$0 = 'myscript'; 
sleep 60; 

修改進程的名字......然後在一個標準的UNIX shell:

$pkill -9 myscript 

有關更多信息,請參見Dynamically name processes

相關問題