我尝试将命令从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
终止此过程,所以看起来它是Python
或os
问题...如何使用Python运行kill
命令?
任何帮助表示赞赏
答案 0 :(得分:4)
os.system
使用sh
执行命令,而不是您在终端中获得的bash
。 kill
内置的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击键事件。