当我们查看系统正在运行的进程时,有时候我们想查看以下进程的详细信息,包括绝对路径,这个时候ps的不足指出就显露出来了,而强大的top也只能查看到进程名而已。
这个时候怎么办呢?个人理解,在linux启动一个进程时,会给进程分配一个ID,就是我们的PID,而与此同时了,系统会在/proc下创建一个文件夹,以PID命名,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件,这就我们想要的,就像win下的exe文件,它是原始程序的一个链接,所以当我们用ls -l的时候就能够得到我们的完整路径!
找到某进程启动路径的方法是:
1.我们可以从ps命令中得到僵死进程的PID,如18283.
2.进入/proc目录下以该PID命名的目录中
3.输入ls -l ,结果中 exe链接对应的就是可执行文件的全路经
$ ls -l /proc/18283
$ top
top - 11:37:41 up 51 min, 4 users, load average: 0.62, 0.80, 0.77
Tasks: 167 total, 1 running, 166 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.6%us, 2.3%sy, 0.0%ni, 87.0%id, 2.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2026800k total, 1948128k used, 78672k free, 565720k buffers
Swap: 261112k total, 0k used, 261112k free, 922732k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1709 ubuntu 20 0 408m 145m 32m S 10 7.4 5:43.69 firefox-bin
1049 root 20 0 94368 34m 13m S 5 1.7 2:04.41 Xorg
1747 ubuntu 20 0 228m 68m 19m S 5 3.5 2:35.79 plugin-containe
1536 ubuntu 20 0 85264 28m 9184 S 2 1.4 0:21.85 compiz
1640 ubuntu 20 0 59260 18m 13m S 1 1.0 0:09.05 gnome-terminal
9 root 20 0 0 0 0 S 0 0.0 0:00.03 events/0
1051 mysql 20 0 142m 18m 5856 S 0 0.9 0:00.90 mysqld
3101 ubuntu 20 0 2548 1224 924 R 0 0.1 0:00.03 top
1 root 20 0 2780 1704 1228 S 0 0.1 0:00.37 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
$ cd /proc/1709/
/proc/1709$ ls
attr cpuset io mountinfo pagemap smaps task
auxv cwd latency mounts personality stack wchan
cgroup environ limits mountstats root stat
clear_refs exe loginuid net sched statm
cmdline fd maps oom_adj schedstat status
coredump_filter fdinfo mem oom_score sessionid syscall
/proc/1709$ ls -l exe
lrwxrwxrwx 1 ubuntu ubuntu 0 2011-08-13 11:13 exe -> /usr/lib/firefox-3.6.18/firefox-bin