标题基本上说明了一切。我有一个程序,只给了我 PID,实际上没有其他信息,我想知道如何获得有关给定进程的更多信息。
答案1
ps -Flww -p THE_PID
将显示一些信息。请参阅ps 手册页了解有关该ps
命令的更多信息。“标准格式说明符”部分解释不同列的含义。
答案2
我不知道您的具体要求是什么。但这可能会对您有所帮助。
每个进程都有一个单独的目录,其名称为 pid 号/proc
。
ps -ef | grep docker
root 1700 1 0 Sep20 ? 00:03:04 /usr/bin/docker daemon --raw-logs
在上面的输出中 PID 是 1700。
去/proc/1700
cd /proc/1700
ls
然后在那里做
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
有许多文件包含有关流程的所有信息。
喜欢:
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
如果您需要基本命令来获取进程信息,那么您可以使用命令轻松获取:
man ps
答案3
除了ps
答案之外,还有一个pidstat
命令将显示其他统计信息,例如用户模式下所花费的时间或 CPU 的占用情况。您可以将它与以下命令一起使用:
# pidstat -p 51648
您还可以添加-d
标志来添加有关 I/O 的详细信息:
# pidstat -p 51648 -d
您还可以使用整数作为第二个参数,使命令每 X 秒刷新一次:
# pidstat -p 51648 3