【发布时间】:2009-10-22 23:34:50
【问题描述】:
这可行,但它会杀死每个 Python 进程。
pkill python
但是,我做不到:
pkill myscript.py
我也尝试过 killall,但也没有运气。 我必须使用正则表达式吗?
顺便说一句,我想在带有 import os.
的 python 脚本中执行此操作【问题讨论】:
这可行,但它会杀死每个 Python 进程。
pkill python
但是,我做不到:
pkill myscript.py
我也尝试过 killall,但也没有运气。 我必须使用正则表达式吗?
顺便说一句,我想在带有 import os.
的 python 脚本中执行此操作【问题讨论】:
您是否从要杀死它的同一脚本启动 Python 子进程?如果是这样,请参阅this question 了解详情。如果没有,您可以使用pkill 的 -f 选项在 Python 进程的参数列表中搜索脚本名称,但您仍然冒着杀死您不打算杀死的东西的风险。请参阅man page 了解更多信息。
【讨论】:
您能否让进程将其pid 写入文件?
在 Python 中,您会得到这样的 pid:
import os
os.getpid()
点名杀人很方便,但正如你所见,有时会产生不良后果。
【讨论】:
kill 'cat pid' 使用反引号而不是 ' 会更容易
您需要查找进程 ID (pid)。您可以使用命令“ps -A | grep NAME”,然后应用“kill -9 PID”。这些命令可以很容易地翻译成 python。
尝试使用“名称”(如在 pkill 中)可能会产生多个匹配项,从而产生意想不到的结果(至少在上述问题中设置的上下文中)。
【讨论】:
pkill有什么不同?
sudo kill -9 `pgrep python`
这个命令会杀死所有正在运行的python进程
【讨论】:
试试这个:
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。
【讨论】: