如何使用确切的程序名称杀死python程序?

问题描述

我想使用linux命令pkill -f“ a.py”杀死一个python程序,但这也杀死了其他同名程序。

例如: 如果我想使用命令pkill -f "a.py"杀死a.py。它还会杀死名称为ab.py

的程序

解决方法

首先,您最初描述的问题无法重现。我用无限循环创建了a.pyab.py,然后在两个终端中同时运行a.py 2ab.py,然后pkill -f 'a\.py'杀死了两个进程之一,如预期的那样。如果我将第二个文件命名为b.py,也会发生同样的情况。即使我忘了逃脱圆点,实际上也会发生同样的情况。

对于注释中的澄清,您只是使用了错误的模式。

完整命令a.py 2a.py 25都满足您的模式。因此应为pkill -f 'a\.py 2$'(请注意转义点以避免适合任何意外的字符,请添加美元符号以说明该模式以2结尾,而后面的5则不属于该字符)

参考man pkill

-f,--full模式通常仅与进程名称匹配。设置-f时,将使用完整的命令行。

OPERANDS

模式

指定扩展正则表达式以与进程名称或命令行进行匹配。

这里重要的一点是您的参数的行为类似于正则表达式,而不是简单的字符串模式。

,

如何使用ps查看过程?

然后,您将看到~path python3 a.py之类的流程命令名称及其运行时间。

因此,您可以确定要杀死的进程,只需执行kill process_num

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...