Библиотека Python для управления процессами Linux

Только расшириться немного... Можно выполнить код непосредственно в эти setTimeout вызов, но как говорит @patrick, Вы обычно присваиваете функцию обратного вызова, как это. Время является миллисекундами

setTimeout(func, 4000);
function func() {
    alert('Do stuff here');
}

13
задан hoju 10 November 2009 в 01:14
поделиться

5 ответов

Проверка списка запущенных процессов выполняется (даже с помощью основных утилит, таких как «ps») путем просмотра содержимого каталога / proc.

Таким образом, библиотека, которую вы используете, интересующий для запроса запущенных процессов такой же, как и для работы с любыми другими файлами и каталогами (например, sys или os , в зависимости от того, какой вкус вам нужен. Обратите особое внимание на os.path , хотя он делает большую часть того, что вам нужно). Чтобы завершить процесс или иным образом взаимодействовать с процессами, вы отправляете им сигналы, что выполняется с помощью os.kill . Наконец, вы запускаете новые процессы, используя os.popen и друзей.

6
ответ дан 1 December 2019 в 21:52
поделиться

Поскольку вы сказали, что это сервер Linux, вызовите внешний ps двоичный файл обычно медленнее, использует больше ресурсов и более подвержен ошибкам, чем использование информации из / proc напрямую.

Поскольку никто не упоминал, есть один простой способ:

glob.glob('/proc/[0-9]*/')

Удачи.

2
ответ дан 1 December 2019 в 21:52
поделиться

подпроцесс Python http: //docs.python. org / library / subprocess.html может вам помочь. Если вы создаете процесс с подпроцессом, вы можете использовать функцию Popen.terminate (), чтобы остановить его.

0
ответ дан 1 December 2019 в 21:52
поделиться

Модуль ОС, вероятно, ваш друг. Есть os.kill , например, чтобы убить процесс.

Что касается получения списка процессов, вы, вероятно, захотите выполнить командный интерпретатор ps . Этот вопрос содержит дополнительную информацию по этому поводу.

1
ответ дан 1 December 2019 в 21:52
поделиться

Это то, что я использую. Он использует procfs (поэтому вы ограничены Unix-подобными системами, я думаю, не будет работать на Mac) и ранее упомянутый glob. Он также получает командную строку, которая позволяет идентифицировать процесс. Для остановки процесса вы можете использовать os.kill (signal.SIGTERM, pid) . Для использования подпроцесса, пожалуйста, проверьте это сообщение Python, Popen и выберите - ожидание завершения процесса или тайм-аута

def list_processes():
    """
    This function will return an iterator with the process pid/cmdline tuple

    :return: pid, cmdline tuple via iterator
    :rtype: iterator

    >>> for procs in list_processes():
    >>>     print procs
    ('5593', '/usr/lib/mozilla/kmozillahelper')
    ('6353', 'pickup -l -t fifo -u')
    ('6640', 'kdeinit4: konsole [kdeinit]')
    ('6643', '/bin/bash')
    ('7451', '/usr/bin/python /usr/bin/ipython')
    """
    for pid_path in glob.glob('/proc/[0-9]*/'):

        # cmdline represents the command whith which the process was started
        f = open("%s/cmdline" % pid_path)
        pid = pid_path.split("/")[2] # get the PID
        # we replace the \x00 to spaces to make a prettier output from kernel
        cmdline = f.read().replace("\x00", " ").rstrip()
        f.close()

        yield (pid, cmdline)
2
ответ дан 1 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: