Python 由于os.system()问题终止Ubuntu上的进程

Python 由于os.system()问题终止Ubuntu上的进程,python,linux,os.system,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:*听22000/python 然后: 但有以下线索 sh:1:kill:非法选项-S 由于某些原因,命令不能用完整的signal-SIGTERM传输到操作系统,而只能用-S。我可以直接从终端终止这个进程,所以这似乎是

我尝试从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:*听22000/python

然后:

但有以下线索

sh:1:kill:非法选项-S

由于某些原因,命令不能用完整的signal-SIGTERM传输到操作系统,而只能用-S。我可以直接从终端终止这个进程,所以这似乎是Python或操作系统的问题。。。如何使用Python运行kill命令? 非常感谢您的帮助

您可以尝试使用

import signal
os.kill(process.pid, signal.SIGKILL)
可以找到文档

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

您可以尝试使用

import signal
os.kill(process.pid, signal.SIGKILL)
可以找到文档

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

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

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

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

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

谢谢!os.kill22000,signal.SIGTERM工作正常谢谢!os.kill22000,signal.SIGTERM工作正常