Python会终止用户拥有的所有进程

时间:2011-01-12 14:15:25

标签: python linux

我需要创建一个可以杀死用户拥有的所有进程的函数,然后再启动一些函数。

我的主要问题是我无法弄清楚如何检查所有进程是否被杀死,以及是否仍有正在运行的进程,重试1-2次以杀死它们,然后返回错误。我只想使用python代码。

这是我的代码:

import os
import pwd


def pkill(user):
    pids = []
    user_pids = []
    uid = pwd.getpwnam(user).pw_uid
# get all PID 
    for i in os.listdir('/proc'):
        if i.isdigit():
            pids.append(i)
# test if PID is owned by user
    for i in pids:
        puid = os.stat(os.path.join('/proc', i)).st_uid
        if puid == uid:
            user_pids.append(i)
# print len(user_pids)
# check of PID still exist and kill it
    for i in user_pids:
        if os.path.exists(os.path.join('/proc',i)):
            try:
                os.kill(int(i), 15)
            except OSError: 

谢谢

2 个答案:

答案 0 :(得分:1)

你不能做同样的事情来找到进程吗?该函数应返回0 ..

答案 1 :(得分:1)

在Linux中检查进程是否正在运行的默认方式(也与POSIX兼容)是使用kill -0 PID,所以在这里你可以简单地做一个os.kill但是用0作为信号,如果进程已经死了,它应该抛出一个异常,如果它还活着就不应该。