如何通过它的名字终止程序/脚本?

时间:2013-12-14 16:37:14

标签: linux bash

我环顾四周,没有一个解决方案适合我。 我想使用命令行终止perl脚本。

例如:

killall myscript.pl

我正在寻找类似于此的解决方案,所有帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:5)

您可以尝试使用pkill,这是当今大多数发行版的标准。

例如

pkill -f myscript.pl

如果你想要一个更便携的解决方案,那么你可以grep寻找名称,提取PID并杀死:

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

答案 1 :(得分:2)

在perl中,分配给变量$0应该更改进程列表的名称。这会影响pskillall所依赖的pkill命令的输出。

如果没有@tvm建议的额外killall myscript.pl参数,

-f将无效,因为脚本在另一个程序(perl解释器)中运行,因此该过程将列为perl /path/to/myscript.pl < / p>

你可以尝试pkill perl,但这会杀死当前用户有权杀死的所有perl解释器,因此它可能很危险。

以编程方式进行此操作的最佳方法是通过分配$0变量

来修改流程的名称
#!/usr/bin/perl
$0 = 'myscript';
sleep 60;

...然后在标准的unix shell中:

$pkill -9 myscript

有关详细信息,请参阅Dynamically name processes