如何跟踪python中启动的进程并在必要时将其杀死?

时间:2014-02-13 13:39:57

标签: python command-line kill-process

我已经使用python使用以下命令在linux中启动了一个命令行程序

  os.system()

我想跟踪程序并在必要时在同一个python程序中杀死它。

如果有人能说出最安全的方法,那会很酷。

由于

1 个答案:

答案 0 :(得分:1)

使用subprocess.PopenPopen.pid,您可以获得您开始的流程的pid。

像这样:

>>> s = subprocess.Popen(["/bin/sleep"," 100 &"])
>>> print s.pid
34934

在另一个shell中,运行ps -ef|grep sleep,您可以看到:

WKPlus@mac:~/workspace/test >ps -ef|grep sleep
  501 34934 34904   0 10:53下午 ttys000    0:00.00 /bin/sleep  100 &
  501 34938   238   0 10:54下午 ttys002    0:00.00 grep sleep

是的,s.pid正是您刚刚开始的流程的pid。

并且,请注意不要向shell=True添加subprocess.Popen(["/bin/sleep"," 100 &"]),否则您将获得shell的pid,这是/bin/sleep的父进程。 The official explanation为此:

Note that if you set the shell argument to True, this is the process ID of the spawned shell.

获得pid后,您可以在此之后使用os.kill(pid)来终止指定的进程。