linux下查看進程的完整路徑 當我們查看系統正在啟動並執行進程時,有時候我們想查看以下進程的詳細資料,包括絕對路徑,這個時候ps的不足指出就顯露出來了,而強大的top也只能查看到進程名而已。 這個時候怎麼辦呢?個人理解,在linux啟動一個進程時,會給進程分配一個ID,就是我們的PID,而與此同時了,系統會在/proc下建立一個檔案夾,以PID命名,在該檔案夾下會有我們的進程的資訊,其中包括一個名為exe的檔案,這就我們想要的,就像win下的exe檔案,它是原始程式的一個連結,所以當我們用ls -l的時候就能夠得到我們的完整路徑! www.2cto.com $ 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就是程式運行時輸入的命令列命令;本例為:。/cbscpu記錄了進程可能運行在其上的cpu;顯示虛擬cpu資訊environ記錄了進程運行時的環境變數fd目錄下是進程開啟或使用的檔案的符號串連。。.通過cwd直接進入進程運行目錄,通過查看相關資訊就可以定位此目錄對應那個連接埠號碼,以及定位是那個應用才使用此服務程式。這樣就獲得了Linux進程檔案路徑了。