这有效,但它会杀死每个Python进程。
pkill python
然而,我不能这样做:
pkill myscript.py
我也尝试了 killall ,但也没有运气。 我是否必须使用正则表达式?
顺便说一句,我想在一个带有 import os的python脚本中这样做。
答案 0 :(得分:5)
您是否从同一个脚本中启动了Python子流程?如果是,请参阅this question了解详情。如果没有,您可以使用pkill
的-f选项在Python进程的参数列表中搜索脚本名称,但仍然存在杀死您不想要的内容的风险。有关详细信息,请参阅man page。
答案 1 :(得分:2)
您是否可以让流程将pid
写入文件?
在Python中你得到这样的pid:
import os
os.getpid()
按名称杀人很方便,但有时会产生不良后果,如你所见。
答案 2 :(得分:2)
sudo kill -9 `pgrep python`
此命令将终止所有正在运行的python进程
答案 3 :(得分:0)
您需要查找进程ID(pid)。您可以使用命令“ps -A | grep NAME”,然后应用“kill -9 PID”。这些命令可以很容易地转换为python。
尝试使用“名称”(如在pkill中)可以产生多个匹配,从而产生意外结果(至少在问题上方设置的上下文中)。
答案 4 :(得分:-1)
试试这个:
echo '#!/usr/bin/env python' > myscript
cat myscript.py >>myscript
chmod +x myscript
./myscript
当然,您必须更改代码以终止名为“myscript”的进程
在UNIX系统上,可执行文件在开头包含几个字节,告诉操作系统正在使用哪种二进制格式。如果前两个字节是#!
,则操作系统假定这实际上是一个文本文件,可以由另一个程序执行,操作系统加载另一个程序并传递给它,即文本文件。
在这种情况下,我可能在顶行写了#!/usr/bin/python
,但是如果你的python在/usr/local/bin
,那么它就行不通了。相反,我利用env
来搜索python的正常路径。所有UNIX系统都在/ usr / bin中有env。有关详细信息,您可以输入man env
。