如何查看進程工做路徑

什麼是進程的工做目錄

進程在哪一個路徑下被運行起來哪一個路徑就是進程的工做目錄(Current Woring Directory, CWD)。程序員

這個概念就是這麼簡單。segmentfault

好比,你在/home/mac下啓動一個進程,那麼該進程的工做目錄就是/home/mac;若是你在/home/mac/bin下啓動同一個程序,那麼該進程的工做目錄就變爲/home/mac/bin。微信

爲何要理解進程的工做路徑

  • 理解了進程的工做目錄就能知道爲何用代碼進行文件操做的時候一般不寫文件的絕對路徑而只寫文件名就能夠了。
    好比進程的工做目錄是/home/mac,那麼當建立一個叫作a.txt的文件時其實建立的是/home/mac/a.txt這個文件。
    也就是說其實咱們能夠簡單的提供給進程一個相對路徑,這個相對路徑相對於誰呢,答案就是進程的工做路徑。
  • 解決bug
    遇到過這樣一個問題,在用其它庫讀取一個配置文件時老是加載失敗,該文件經過相對路徑讀取的,因爲庫也沒有打印出錯誤日誌因此很難直接排查緣由。仔細分析才發現原來該進程不是在配置文件所在的路徑下被啓動的,致使進程找不到配置文件因此加載出錯。

如何查看進程的工做路徑

有已下幾種方法方便查看。工具

方法一

使用pwdx命令,這是最簡單的方法,提供進程號,該命令就能夠返回進程的工做目錄。好比有一個進程號是17681的進程,使用命令,spa

$ pwdx 17681
/home/mac/bin

能夠看到該進程的工做目錄是/home/mac/bin。線程

方法二

使用/proc/{pid}這個重量級工具,其原理在碼農的荒島求生《如何查看進程開啓了多少線程》這篇文章中已經解釋過了,在/proc/{pid}目錄下有一個叫作cwd的軟鏈接,經過查看這個原連接就能夠知道進程的工做路徑了。使用以下命令,日誌

$  ll /proc/17681/cwd
lrwxrwxrwx 1 mac mac 0 Oct 10 04:30 /proc/17681/cwd -> /home/mac/bin

能夠看到,該進程的工做目錄和方法一獲得的路徑是一致的。code

總結

使用pwdx和proc/{pid}能夠很方便的查看進程的工做路徑。進程

One more thing...

若是你喜歡該文章,歡迎關注個人微信公共帳號,碼農的荒島求生,獲取更多計算機內功的知識。ip

計算機內功決定程序員職業生涯高度

clipboard.png

相關文章
相關標籤/搜索