日期:2014-05-16  浏览次数:20749 次

linux下查看进程的完整路径

linux 下查看进程的完整路径

当我们查看系统正在运行的进程时,有时候我们想查看以下进程的详细信息,包括绝对路径,这个时候ps的不足指出就显露出来了,而强大的top也只能查看到进程名而已。

??? 这个时候怎么办呢?个人理解,在linux启动一个进程时,会给进程分配一个ID,就是我们的PID,而与此同时了,系统会在/proc下创建一个文件夹,以PID命名,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件,这就我们想要的,就像win下的exe文件,它是原始程序的一个链接,所以当我们用ls? -l的时候就能够得到我们的完整路径!

??? $ 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

-----------------------------------------------------

cwd符号链接的就是进程22401的运行目录;

exe符号连接就是执行程序的绝对路径;

cmdline就是程序运行时输入的命令行命令;本例为:。/cbs

cpu记录了进程可能运行在其上的cpu;显示虚拟的cpu信息

environ记录了进程运行时的环境变量

fd目录下是进程打开或使用的文件的符号连接

。。.

通过cwd直接进入进程运行目录,通过查看相关信息就可以定位此目录对应那个端口号,以及定位是那个应用才使用此服务程序。这样就获得了Linux进程文件路径了。

?