Ich erstelle ein einfaches Programm in Python, das meine aktuellen Prozesse speichern sollte (mit Linux und pycharm).kann einige der Prozessnamen nicht sehen
meine Klassencode:
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
und mein Haupt-Code:
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)])
die Ausgabe:
1 : /sbin/init
2 :
3 :
5 :
...
7543 : less
...
so aus irgendeinem Grund für einige der Verfahren kann ich nicht einen Namen bekommen und ich habe einen leeren rausbekommen. , wenn ich auf meinem Computer laufe ps -aux | less
der Befehl bekam ich dieses Ergebnis:
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
also im Grunde der Prozess, dass ich nicht in meinem Python sehen kann, sind die Verfahren, die von „[]“ umgeben.
Ich verstehe nicht, warum das ist. Außerdem möchte ich sie auch bekommen. Wie kann ich das machen und warum passiert das?
danke!
Ziemlich sicher 'cat/proc/2/cmdline' zeigt Ihnen auch nichts, versuchen Sie 'strace ps -aux | grep/proc' –
@PadraicCunningham hast du recht. aber das ist ein Prozess mit Pid 2. Vielleicht habe ich das falsch? Gibt es einen besseren Weg, mir die Infos zu zeigen? Und ich verstehe nicht wirklich warum? Warum gibt 'cat/proc/1/cmdline' mir Informationen, aber 2 nicht? – moshem
Wenn Sie auf die Strace-Ausgabe schauen, können Sie '/ status' usw. sehen. Das ist, wo die Namen für das kommen, was Sie nicht sehen. –