Wie können detaillierte Informationen zu einer bestimmten PID angezeigt werden?

23

Die Überschrift sagt eigentlich alles. Ich habe ein Programm, in dem mir nur die PID gegeben wird, nicht mehr wirklich, und ich möchte wissen, wie ich mehr Informationen über den gegebenen Prozess erhalte.

Philip
quelle
Wenn Sie in Python arbeiten, möchten Sie wahrscheinlich die psutilBibliothek verwenden. Tun: psutil.Process(pid)um das Prozessobjekt zu erhalten und dann verwenden Sie seine Schnittstelle zum Abrufen von Informationen über Speicher / CPU usw. usw.
Bakuriu

Antworten:

12

Ich weiß nicht, was Ihre genaue Anforderung ist. aber das kann dir helfen.

Für jeden Prozess gibt es ein eigenes Verzeichnis mit dem Namen als PID-Nummer in /proc.

ps -ef | grep docker 
root      1700     1  0 Sep20 ?        00:03:04 /usr/bin/docker daemon --raw-logs

In der obigen Ausgabe ist die PID 1700.

gehe zu /proc/1700

cd /proc/1700

und tun lses

ls
attr       clear_refs       cpuset   fd       limits     mem         net        oom_score      projid_map  sessionid  stat     task
autogroup  cmdline          cwd      fdinfo   loginuid   mountinfo   ns         oom_score_adj  root        setgroups  statm    timers
auxv       comm             environ  gid_map  map_files  mounts      numa_maps  pagemap        sched       smaps      status   uid_map
cgroup     coredump_filter  exe      io       maps       mountstats  oom_adj    personality    schedstat   stack      syscall  wchan

Es gibt viele Dateien, die alle Informationen zum Prozess enthalten.

Mögen:

cat /proc/1700/status

Name:   docker
State:  S (sleeping)
Tgid:   1700
Ngid:   0
Pid:    1700
PPid:   1
TracerPid:  0
Uid:    0   0   0   0
Gid:    0   0   0   0
FDSize: 64
Groups: 0 999 
VmPeak:   527576 kB
VmSize:   527512 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:     46032 kB
VmRSS:     34180 kB
VmData:   449308 kB
VmStk:       136 kB
VmExe:     28324 kB
VmLib:      4236 kB
VmPTE:       296 kB
VmSwap:     5324 kB
Threads:    12
SigQ:   0/63662
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: ffffffffffc1feff
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
Seccomp:    0
Cpus_allowed:   f
Cpus_allowed_list:  0-3
Mems_allowed:   00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    437726
nonvoluntary_ctxt_switches: 27579

Wenn Sie einen Basisbefehl benötigen, um Prozessinformationen abzurufen, können Sie den folgenden Befehl problemlos verwenden:

man ps
pl_rock
quelle
3

Um die psAntwort zu ergänzen, gibt es auch den pidstatBefehl, der zusätzliche Statistiken wie die im Benutzermodus verbrachte Zeit oder die Belegung der CPU anzeigt. Sie können es verwenden mit:

# pidstat -p 51648

Sie können auch das -dFlag hinzufügen, um Details zu E / A hinzuzufügen:

# pidstat -p 51648 -d

Sie können auch eine Ganzzahl als zweiten Parameter angeben, damit der Befehl alle X Sekunden aktualisiert wird:

# pidstat -p 51648 3
statox
quelle