使用 os.system() 问题终止 Ubuntu 上的进程

Killing process on Ubuntu with os.system() issue

我尝试将命令从 python shell 发送到 Ubuntu OS 以定义特定端口上存在的进程并将其终止:

port = 8000
os.system("netstat -lpn | grep %s" % port)

输出:

tcp 0 0 127.0.0.1.8000 0.0.0.0:* LISTEN 22000/python

然后:

os.system("kill -SIGTERM 22000")

但得到了追踪

sh: 1: kill: Illegal option -S

出于某种原因,无法将命令传输到具有完整信号 -SIGTERM 的 OS,但只能传输到 -S。我可以简单地直接从 Terminal 终止这个进程,所以看起来它是 Pythonos 问题...我如何使用 运行 kill 命令36=]? 感谢任何帮助

您可以尝试使用

import signal
os.kill(process.pid, signal.SIGKILL)

可以找到文档 here

您也可以使用 signal.CTRL_C_EVENT,它对应于 CTRL+C 击键事件。

os.system 使用 sh 来执行命令,而不是您在终端中获得的 bashsh 中的 kill 内置函数要求给出信号名称时不带 SIG 前缀。将 os.system 命令行更改为 kill -TERM 22000

[编辑] 正如@DJanssens 建议的那样,使用 os.kill 比调用 shell 这样简单的事情更好。