Pertanyaan Daftar proses di Linux melalui Python


Bagaimana saya bisa mendapatkan daftar proses yang sedang berjalan menggunakan Python di Linux?


75
2018-04-24 07:44


asal


Jawaban:


IMO mencari di /proc filesystem kurang jahat dari peretasan output teks 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

101
2018-04-24 15:20



Anda bisa menggunakannya psutil sebagai solusi independen platform!

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]

69
2018-06-17 19:25



Anda dapat menggunakan pustaka pihak ketiga, seperti PSI:

PSI adalah paket Python yang menyediakan akses real-time ke proses dan informasi sistem lain-lain seperti arsitektur, boottime dan filesystem. Ini memiliki API pythonic yang konsisten di semua platform yang didukung tetapi juga memaparkan rincian platform-spesifik di mana diinginkan.


8
2018-04-24 08:09



Cara yang disetujui untuk membuat dan menggunakan proses anak adalah melalui modul subprocess.

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

Perintah dipecah menjadi daftar argumen python sehingga tidak perlu dijalankan dalam shell (Secara default subprocess.Popen tidak menggunakan apapun dari lingkungan shell hanya mengeksekusinya). Karena ini kami tidak bisa hanya menyediakan 'ps-U 0' ke Popen.


4
2018-04-24 19:00



Saya akan menggunakan subproses modul untuk menjalankan perintah ps dengan opsi yang sesuai. Dengan menambahkan opsi, Anda dapat memodifikasi proses yang Anda lihat. Banyak contoh tentang subproses pada SO. Pertanyaan ini jawaban cara menguraikan output ps sebagai contoh:)

Anda bisa, sebagai salah satu contoh jawaban menunjukkan juga gunakan PSI modul untuk mengakses informasi sistem (seperti tabel proses di contoh ini).


0
2018-04-24 07:50



import os
lst = os.popen('sudo netstat -tulpn').read()
lst = lst.split('\n')
for i in range(2,len(lst)):
    print(lst[i])

-1
2018-04-27 06:06