私は現在のプロセス(linuxとpycharmを使って)を保存する単純なプログラムを、Pythonで作成しています。プロセス名の一部を見ることができません
私のクラスコード:
class pidSaver:
__pidDictionary={}
def __init__(self):
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
for pid in pids:
try:
os.kill(int(pid), 0)
except OSError as e:
if e.errno != errno.EPERM: #no premission error
continue
try:
self.__pidDictionary[pid]=open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
except IOError: # proc has already terminated
continue
def getDic(self):
return self.__pidDictionary
と私のメインコード:
pidsTry = pidSaver()
printList= pidsTry.getDic()
keyList= list(printList.keys())
IntegerKeyList=[]
for key in keyList:
IntegerKeyList.append(int(key))
IntegerKeyList.sort()
for key in IntegerKeyList:
print "%d : %s" %(key ,printList[str(key)])
出力:私はできないプロセスのいくつかのためのいくつかの理由からそう
1 : /sbin/init
2 :
3 :
5 :
...
7543 : less
...
名前を取得し、私は空白を入れた。 私はコマンドps -aux | less
私のコンピュータ上で実行したときに、私はこのような結果を得た:
root 1 0.0 0.0 33776 4256 ? Ss אפר24 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S אפר24 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S אפר24 0:00 [ksoftirqd/0]
myUser 7543 0.0 0.0 13752 1548 pts/9 T אפר24 0:00 less
はとても基本的に、私は私のpythonで見ることができないプロセスは、「[]」で囲まれたプロセスです。
私はなぜこれが理解できません。また、私もそれらを取得したい。どうすればいいのでしょうか、なぜこれが起こっていますか?
ありがとうございました!
'cat/proc/2/cmdline'でも何も表示されないでしょう。' strace ps -aux | grep/proc' –
@PadraicCunninghamあなたは正しいです。しかし、pid 2のプロセスです。これは間違っているのでしょうか?私に情報を示す良い方法がありますか?そして、なぜこれが本当に理解できないのですか?なぜ 'cat/proc/1/cmdline'が私に情報を与えるのですか2はしませんでしたか? – moshem
straceの出力を見ると、 '/ status'などが表示されます。これはあなたが見ないものの名前です。 –