使用os.system()问题在{8}问题上对Ubuntu进行杀戮过程

时间:2015-07-23 10:45:47

标签: python linux os.system

我尝试将命令从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的操作系统,而只能传输到-S。我可以直接从Terminal终止此过程,所以看起来它是Pythonos问题...如何使用Python运行kill命令? 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:4)

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

[编辑]正如@DJanssens所建议的那样,使用os.kill是一个比调用shell更好的选择。

答案 1 :(得分:3)

您可以尝试使用

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

文档可以找到here

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

相关问题