So finden Sie den Benutzernamen von PID unter Linux
16
Können Sie mir helfen, den Benutzernamen der PID zu finden? Irgendwann wurde mein Server stark ausgelastet. Wenn ich oben -c, kann ich nicht einmal den Benutzernamen der PID finden, wer / was Last auf dem Server verursacht.
Es gab ein Problem mit der Serverauslastung aufgrund eines Massen-PHP-Prozesses, sodass ich diese Frage hatte und sie dann mit 'lsof -p xxxx' finden kann.
Ranjithkumar T
Antworten:
30
Ich bin überrascht, dass dies noch niemand gesagt hat:
Probieren Sie die -pOption zum psBefehl.
Wenn Sie beispielsweise eine PID haben 1234, führen Sie Folgendes aus:
ps -u -p 1234
(Das -uwurde hinzugefügt, um den Benutzernamen in die Ausgabe aufzunehmen.)
Sie können mit grepoder awkusw. die gewünschten Informationen extrahieren.
Sie waren eine Zecke schneller als ich. Du wachst früher auf? Je nach Linux-Distribution funktioniert auch ps u 1234(Debian) oder nur ps 1234(Android mit Busybox).
ott--
5
/proc/processID/status enthält die Informationen zur Benutzer-ID, anhand derer Sie den Benutzernamen ermitteln können.
Was genau willst du? Wenn ich auf meinem System 'top -c' ausführe, erhalte ich:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2873 matt 20 0 3022m 1.6g 1.6g S 22 21.6 2245:42 /usr/lib/virtualbox/VirtualBox --comment ESX5-1 --startvm 4fd78ee9-739a-4d53-a0ce-4f9819ab9411 --no-startvm-errormsgbox
29764matt 20 0 2779m 1.4g 1.3g S 5 18.4 210:33.51 /usr/lib/virtualbox/VirtualBox --comment win2008-2 --startvm 202ec2b7-ae12-40e9-af76-2be429e553d7 --no-startvm-errormsgbox
17281root 20 0 0 0 0 S 2 0.0 0:05.90 [kworker/u:2]
Die PID (processus / task identifier) ist also die erste Spalte, und das Benutzerkonto, unter dem der processus ausgeführt wird, ist die zweite Spalte
Die /proc/<pid>/loginuidDatei hat die UID-Nummer des Benutzers, der den Prozess ausführt. id -nuLiest die UID von STDIN und gibt einen Benutzernamen zurück.
Antworten:
Ich bin überrascht, dass dies noch niemand gesagt hat:
Probieren Sie die
-p
Option zumps
Befehl.Wenn Sie beispielsweise eine PID haben
1234
, führen Sie Folgendes aus:(Das
-u
wurde hinzugefügt, um den Benutzernamen in die Ausgabe aufzunehmen.)Sie können mit
grep
oderawk
usw. die gewünschten Informationen extrahieren.quelle
ps u 1234
(Debian) oder nurps 1234
(Android mit Busybox)./proc/processID/status
enthält die Informationen zur Benutzer-ID, anhand derer Sie den Benutzernamen ermitteln können.Das macht das selbe:
Ersetzen Sie YOUR_PROCESS_ID durch Ihre Prozess-ID.
quelle
Erhalten Sie nur einen Benutzernamen von einer PID:
Sie können es auch mit einem kombinieren
pgrep
. In diesem Beispiel zeigen wir alle Benutzernamen, die eine.php
Datei ausführen :Finden Sie nur einen Benutzernamen, der einen bestimmten eindeutigen Prozess ausführt:
quelle
Was genau willst du? Wenn ich auf meinem System 'top -c' ausführe, erhalte ich:
Die PID (processus / task identifier) ist also die erste Spalte, und das Benutzerkonto, unter dem der processus ausgeführt wird, ist die zweite Spalte
quelle
Ich denke, der kürzeste Weg ist:
Die
/proc/<pid>/loginuid
Datei hat die UID-Nummer des Benutzers, der den Prozess ausführt.id -nu
Liest die UID von STDIN und gibt einen Benutzernamen zurück.quelle