Подтвердить что ты не робот

Список процессов в Linux через Python

Как я могу запустить список процессов с помощью Python в Linux?

4b9b3361

Ответ 1

IMO, смотрящая на файловую систему /proc, менее неприятна, чем взломать текстовый вывод ps.

import os
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]

for pid in pids:
    try:
        print open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
    except IOError: # proc has already terminated
        continue

Ответ 2

Вы можете использовать psutil в качестве независимого от платформы решения!

import psutil
psutil.pids()

[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224,
268, 1215, 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355,
2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 
4263, 4282, 4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 
4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446, 5167, 5234, 5235, 
5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]

Ответ 3

Вы можете использовать стороннюю библиотеку, такую ​​как PSI:

PSI - это пакет Python, обеспечивающий доступ в режиме реального времени к процессам и другой разной системной информации, такой как архитектура, загрузочное пространство и файловые системы. Он имеет pythonic API, который совместим по всем поддерживаемым платформам, но также предоставляет детали, специфичные для платформы, где это желательно.

Ответ 4

Санкционированный способ создания и использования дочерних процессов - через модуль подпроцесса.

import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl

Команда разбивается на список аргументов python, поэтому ее не нужно запускать в оболочке (по умолчанию подпроцесс .Popen не использует какой-либо оболочки, которую он просто запускает). Из-за этого мы не можем просто поставить "ps -U 0" в Popen.

Ответ 5

Я бы использовал subprocess для выполнения команды ps с соответствующими параметрами. Добавляя параметры, вы можете изменить, какие процессы вы видите. Множество примеров по подпроцессу на SO. Этот вопрос отвечает, как выполнить синтаксический анализ вывода ps, например:)

Вы можете, как показать один из приведенных примеров ответов, также использовать PSI для доступа к системной информации (такой как таблица процессов в в этом примере).

Ответ 6

Я использую это, чтобы получить список всех процессов.

import os

processoutput = os.popen("ps -Af").read()
print(processoutput)

Ответ 7

DEPRECATED:

Перечислить процессы с использованием firefox в Python:

import os
os.system('ps ax | grep firefox | grep -v grep | awk \'{print $1}\')

Чтобы убить процессы с использованием firefox в Python:

import os
os.system('kill $(ps ax | grep firefox | grep -v grep | awk \'{print $1}\')')

ДОВЕРЕННЫЕ ВХОДЫ:

В список:

import subprocess
print subprocess.check_output('ps ax | grep firefox | grep -v grep | awk \'{print $1}\'',shell=True)

Чтобы убить:

import subprocess
print subprocess.check_output('kill $(ps ax | grep firefox | grep -v grep | awk \'{print $1}\')',shell=True)