我环顾四周,没有一个解决方案适合我。 我想使用命令行终止perl脚本。
例如:
killall myscript.pl
我正在寻找类似于此的解决方案,所有帮助表示赞赏。感谢。
答案 0 :(得分:5)
您可以尝试使用pkill,这是当今大多数发行版的标准。
例如
pkill -f myscript.pl
如果你想要一个更便携的解决方案,那么你可以grep寻找名称,提取PID并杀死:
kill $(ps xa | grep [m]yscript | awk '{ print $1; exit }')
答案 1 :(得分:2)
在perl中,分配给变量$0
应该更改进程列表的名称。这会影响ps
和killall
所依赖的pkill
命令的输出。
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。