【问题标题】:Killing process on Ubuntu with os.system() issue使用 os.system() 问题在 Ubuntu 上杀死进程
【发布时间】:2015-07-23 10:45:46
【问题描述】:

我尝试从 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 命令? 任何帮助表示赞赏

【问题讨论】:

    标签: python linux os.system


    【解决方案1】:

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

    [编辑] 正如@DJanssens 所建议的那样,使用os.kill 是比调用shell 来完成如此简单的事情更好的选择。

    【讨论】:

      【解决方案2】:

      你可以试试

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

      文档可以在here找到。

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

      【讨论】:

      • 谢谢! os.kill(22000, signal.SIGTERM) 工作正常
      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 2012-09-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多