Python убивает все процессы, принадлежащие пользователю - PullRequest
0 голосов
/ 12 января 2011

Мне нужно сделать функцию, которая может убить все процессы, принадлежащие пользователю, а затем запустить несколько.

Моя основная проблема заключается в том, что я не могу понять, как проверить, все ли процессы были уничтожены, и если все еще запущенные процессы, повторить попытку 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 ]

1 голос
/ 12 января 2011

Стандартный способ проверить, запущен ли процесс в Linux (он также совместим с POSIX), это использовать kill -0 PID, поэтому здесь вы можете просто сделать os.kill, но с 0 в качестве сигнала, если процесс мертв, он должен выдать исключение, если он жив, он не должен.

1 голос
/ 12 января 2011

вы не можете сделать то же самое, что вы сделали, чтобы найти процессы?эта функция должна вернуть 0 ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...