Linux 如何根据程序/脚本的名称终止程序/脚本?

Linux 如何根据程序/脚本的名称终止程序/脚本?,linux,bash,Linux,Bash,我环顾四周,没有一个解决方案对我有效。 我想使用命令行终止perl脚本 例如: killall myscript.pl 我正在寻找类似的解决方案,非常感谢您的帮助。谢谢。你可以试试pkill,它是当今大多数发行版的标准 例如 如果您想要一个更具可移植性的解决方案,那么您可以grep输入名称、提取PID并终止: kill $(ps xa | grep [m]yscript | awk '{ print $1; exit }') 您可以尝试pkill,这是当今大多数发行版的标准 例如 如果您想要

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

例如:

killall myscript.pl

我正在寻找类似的解决方案,非常感谢您的帮助。谢谢。

你可以试试pkill,它是当今大多数发行版的标准

例如

如果您想要一个更具可移植性的解决方案,那么您可以grep输入名称、提取PID并终止:

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

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

例如

如果您想要一个更具可移植性的解决方案,那么您可以grep输入名称、提取PID并终止:

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

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

如果没有建议的额外-f参数@tvm,killall myscript.pl将无法工作,因为脚本在另一个程序中运行,即perl解释器,因此进程将列为perl/path/to/myscript.pl

您可以尝试pkillperl,但这将杀死当前用户有权杀死的所有perl解释器,因此这可能是危险的

以编程方式进行此操作的最佳方法是通过分配给$0变量来修改进程的名称

。。。然后在标准unix shell中:

$pkill -9 myscript

有关更多信息,请参阅。

在perl中,为变量$0赋值应该会更改进程列表的名称。这将影响killall和pkill所依赖的ps命令的输出

如果没有建议的额外-f参数@tvm,killall myscript.pl将无法工作,因为脚本在另一个程序中运行,即perl解释器,因此进程将列为perl/path/to/myscript.pl

您可以尝试pkillperl,但这将杀死当前用户有权杀死的所有perl解释器,因此这可能是危险的

以编程方式进行此操作的最佳方法是通过分配给$0变量来修改进程的名称

。。。然后在标准unix shell中:

$pkill -9 myscript

请参阅以了解更多信息。

我认为这不起作用,因为ps将看到perl/my/path/myscript.pls刚刚尝试了这个。似乎不起作用。你可以一直使用-f开关,我已经编辑了原始答案。看,我想在@tvm的答案中指出一点微妙的未说明的聪明:grep[m]yscript。方括号是聪明的一点。就正则表达式本身而言,拥有一个由单个字符组成的字符类在功能上与省略括号相同。但是:如果没有这一点,你实际上会从ps获得两个点击率——一个是你想要的,另一个是对grep本身的呼叫。对于方括号,grep调用不匹配,因为它有一些文字方括号,所以它将匹配\[m\]yscript,但不匹配[m]yscript。我认为这不起作用,因为ps将看到perl/my/path/myscript。pls刚刚尝试过这个。似乎不起作用。你可以一直使用-f开关,我已经编辑了原始答案。看,我想在@tvm的答案中指出一点微妙的未说明的聪明:grep[m]yscript。方括号是聪明的一点。就正则表达式本身而言,拥有一个由单个字符组成的字符类在功能上与省略括号相同。但是:如果没有这一点,你实际上会从ps获得两个点击率——一个是你想要的,另一个是对grep本身的呼叫。对于方括号,grep调用不匹配,因为它有一些文字方括号,所以它将匹配\[m\]yscript,但不匹配[m]yscript。为什么killall不能工作?输出是什么?你能展示你想用ps杀死的进程吗?也许用pkill…..为什么killall不起作用?输出是什么?你能展示你想用ps杀死的进程吗?也许可以用pkill。。。。。