Python経由のLinuxでのプロセスリスト


回答:


128

/procファイルシステムを見るIMO は、のテキスト出力をハッキングするよりも厄介ではありません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().split('\0')
    except IOError: # proc has already terminated
        continue

10
os.listdir( '/ proc')の読み取りから返されたpidは、コマンドラインを読み取るときには存在しない可能性があるため、read()呼び出しをtry / exceptブロックで囲む必要があります。
Yanamon、2012

4
やっと!検証!やめられます!:-)
ボビンス、

5
/ procは-1(移植性がなく、より優れたインターフェースが利用可能であるため)
Good Person

2
注意:コマンドラインは0x00で終了します。空白も同じ文字に置き換えられます。
フェデリコ

2
使用するだけですpsutil-これはすてきなPythonicインターフェースを介してこれをすべて行い、Linux以外のサーバーで実行したい場合は移植可能です。
RichVel、2015年

83

プラットフォームに依存しないソリューションとして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]

2
ちょうど見とるドキュメントを
enthus1ast 2012

これを持ってきてくれてありがとう!きちんとしたパッケージ。
codekoala

5
これは完全にプラットフォームに依存しているわけではありません-OSXでは
#!

@amosはちょっと理にかなっています-プロセスに関する情報に連絡する前に、まず特権を用意する必要があります。ヒントをありがとう。
JSmyth 2014年

OSXポイントを拡大するには、Linuxとは異なり、プロセス情報を取得するにはOSXのroot権限が必要です。
RichVel 2015年

8

PSIなどのサードパーティライブラリを使用できます。

PSIは、プロセスや、アーキテクチャ、ブートタイム、ファイルシステムなどのその他のシステム情報へのリアルタイムアクセスを提供するPythonパッケージです。サポートされているすべてのプラットフォームで一貫したpythonic APIを備えていますが、必要に応じてプラットフォーム固有の詳細も公開しています。


2
PSIは2009年に最後に更新されましたが、psutilは今月(2015年11月)に更新されました-psutilの方が適しているようです。
RichVel 2015年

7

子プロセスを作成および使用する認可された方法は、サブプロセスモジュールを使用することです。

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

コマンドは、引数のpythonリストに分解されるため、シェルで実行する必要はありません(デフォルトでは、subprocess.Popenは、実行するだけのシェル環境を使用しません)。このため、Popenに「ps -U 0」を単純に指定することはできません。


0

サブプロセスモジュールを使用して、ps適切なオプションを指定してコマンドを実行します。オプションを追加することで、表示するプロセスを変更できます。SOのサブプロセスに関する多くの例。この質問ps、たとえばの出力を解析する方法に答えます:)

あなたは、のようにすることができる例示的な回答のいずれかを示し、また使用PSIのモジュールは、(例えばにおける処理テーブルとしてアクセスシステム情報に、この例)。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.