Как я могу запустить список процессов с помощью Python в Linux?
Список процессов в Linux через Python
Ответ 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)