我發現的獲取linux進程的執行文件路徑的方法有如下2個:
1、在c++代碼裏面通過函數gecpwd獲取進程當前執行文件路徑,通過日誌或控制檯來顯示當前進程的運行路徑。這估計是大家看到這個標題就想到的方法。
2、直接通過shell來查看,這也是我在實際情況中碰到的情況:
就是我們開發的系統,控制了在同一個路徑下只能夠運行一次,在實際部署環境過程中會在不同的路徑下提供不同的tcp端口號給不同的應用來測試聯調,這樣,在以./cmd的形式運行多個程序後,會出現通過ps查看進程時,看到n多的./cmd的同名進程在運行。一旦那個應用出現問題或者時間久了後,需要查找對應目錄時,不能夠迅速定位那個進程是運行在那個具體的位置以及爲誰服務。具體做法就是:
1、以超級用戶登陸
2、進入/proc目錄
3、ps查看所有符合./cmd的進程,找出其對應的進程號
4、用ll命令: ll 進程號
如下顯示一個示例:
[root@Cluster1 proc]# ll 22401
total 0
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cmdline
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cpu
lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 cwd -> /home/zhouys/sbs/bin
-r-------- 1 zhouys zhouys 0 Dec 11 11:10 environ
lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 exe -> /home/zhouys/sbs/bin/cbs (deleted)
dr-x------ 2 zhouys zhouys 0 Dec 11 11:10 fd
-r-------- 1 zhouys zhouys 0 Dec 11 11:10 maps
-rw------- 1 zhouys zhouys 0 Dec 11 11:10 mem
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 mounts
lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 root -> /
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 stat
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 statm
-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 status
/proc文件系統下的 進程號目錄 下面的文件鏡像了進程的當前運行信息,從中可以看到:
cwd符號鏈接的就是進程22401的運行目錄;
exe符號連接就是執行程序的絕對路徑;
cmdline就是程序運行時輸入的命令行命令;本例爲:./cbs
cpu記錄了進程可能運行在其上的cpu;顯示虛擬的cpu信息
environ記錄了進程運行時的環境變量
fd目錄下是進程打開或使用的文件的符號連接
...
通過cwd直接進入進程運行目錄,通過查看相關信息就可以定位此目錄對應那個端口號,以及定位是那個應用才使用此服務程序。
獲取Linux進程的執行文件路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux核心技能与应用
wy53780
2020-04-23 14:02:05
Python與家國天下
豌豆花下貓
2019-02-24 22:22:40
linux上安裝Docker(非常簡單的安裝方法)
幸運券發放
2019-02-24 19:38:01
2019年Java面試-併發容器篇
王知無
2019-02-24 15:12:46
淺淡個人學習嵌入式Linux過程
wx5c317e5b736d2
2019-02-24 13:31:30
DHCP服務原理與搭建(Linux系統+路由器,二選一方案)
wx5c7174443c6f9
2019-02-24 13:23:18
Redis安裝與配置
劉遄
2019-02-24 13:12:51
Linux查看CPU和內存使用情況
wbzjacky
2019-02-24 13:12:37
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
HSRP和二層交換機的端口聚合、vlan
wbzjacky
2019-02-24 13:12:37
服務器雙機熱備解決方案
wbzjacky
2019-02-24 13:12:37