Linux proc pid記錄了什麼

2021-08-16 09:23:39 字數 3818 閱讀 6477

由於自己linux系統知識基礎比較薄弱,準備比較全面學習,準備從/proc這個目錄開始。實際上這個目錄也基本上記錄所有系統執行時和核心的一些資訊,所以如果想對linux系統有乙個比較全面的了解,從/proc入手應該是個不錯的選擇。準備將自己學習的過程記錄下來,分享給同樣需要的朋友,也便於以後查閱。今天準備介紹一下/proc/pid這個目錄到底是做什麼用的,它到底記錄了哪些資訊。

cd /proc/之後,你會發現很多的目錄和檔案,今天首先來介紹的就是那些以數字命名的目錄--它們就是linux中的程序號,每當你建立乙個程序時,裡面就會動態更新多出乙個名稱為pid的目錄,然後你ls -l /proc/pid會發現如下資訊:

dr-xr-xr-x  2 user group 0 sep 19 16:17 attr

-r--------  1 user group 0 sep 19 16:17 auxv

-r--r--r--  1 user group 0 sep 19 16:17 cgroup

--w-------  1 user group 0 sep 19 16:17 clear_refs

-r--r--r--  1 user group 0 sep 18 14:18 cmdline

-rw-r--r--  1 user group 0 sep 19 16:17 coredump_filter

-r--r--r--  1 user group 0 sep 19 16:17 cpuset

lrwxrwxrwx  1 user group 0 sep 19 16:17 cwd -> /home/user/zbs/mysql/node-2

-r--------  1 user group 0 sep 19 16:17 environ

lrwxrwxrwx  1 user group 0 sep 19 16:17 exe -> /home/user/zbs/xtradb-5.1.47_group/libexec/mysqld

dr-x------  2 user group 0 sep 18 14:38 fd

dr-x------  2 user group 0 sep 19 16:17 fdinfo

-r--------  1 user group 0 sep 19 16:17 io

-r--------  1 user group 0 sep 19 16:17 limits

-rw-r--r--  1 user group 0 sep 19 16:17 loginuid

-r--r--r--  1 user group 0 sep 19 16:17 maps

-rw-------  1 user group 0 sep 19 16:17 mem

-r--r--r--  1 user group 0 sep 19 16:17 mountinfo

-r--r--r--  1 user group 0 sep 19 16:17 mounts

-r--------  1 user group 0 sep 19 16:17 mountstats

dr-xr-xr-x 10 user group 0 sep 19 16:17 net

-r--r--r--  1 user group 0 sep 19 16:17 numa_maps

-rw-r--r--  1 user group 0 sep 19 16:17 oom_adj

-r--r--r--  1 user group 0 sep 19 16:17 oom_score

-r--r--r--  1 user group 0 sep 19 16:17 pagemap

-r--r--r--  1 user group 0 sep 19 16:17 personality

lrwxrwxrwx  1 user group 0 sep 19 16:17 root -> /

-rw-r--r--  1 user group 0 sep 19 16:17 sched

-r--r--r--  1 user group 0 sep 19 16:17 sessionid

-r--r--r--  1 user group 0 sep 19 16:17 smaps

-r--r--r--  1 user group 0 sep 19 16:17 stack

-r--r--r--  1 user group 0 sep 18 14:18 stat

-r--r--r--  1 user group 0 sep 18 14:18 statm

-r--r--r--  1 user group 0 sep 18 14:18 status

-r--r--r--  1 user group 0 sep 19 16:17 syscall

dr-xr-xr-x 20 user group 0 sep 19 16:17 task

下面我們挑常用的來解釋(用紅色標註出)

cmdline:這個主要是當前這個程序被執行時的command line,裡面包括了執行時指定的一些引數,比如如果是mysqld的話就包括basedir==,datadir==,port=,socket=等等資訊,你可以自己嘗試一下。

cwd:current working directory,當前的工作目錄

environ:這是個比較有用的檔案,裡面記錄了當前程序的一些環境變數,比如一台機器上對同乙個系統起多個例項(當然是不同埠、不同資料目錄),而你想知道哪個程序對應的是在哪個資料目錄起來的(可能是因為你想kill-9其中乙個例項,因為你怕弄錯,所以的確定哪個程序是對應哪個資料目錄),那麼此時你該怎麼辦呢?兩者方法:1.strings /proc/pid/environ | grep pwd 2.tr \\0 \\n < /proc/pid/envrion | grep pwd 即可。當然裡面還有很多的資訊,你可以自己嘗試。

exe:這個就是起這個程序的執行檔案

fd:程序開啟的檔案描述符,我記得以前有人使用mysql遇到過two many openfiles的錯誤,這個就是開啟太多的檔案導致的,當然你如果只修改mysql裡面的引數可能不會起作用,因為可能os上設定了乙個比較小的數,所以要兩者都調大。

fdinfo:跟上面乙個一樣,只不過只有檔案描述符的值,沒有表示這個檔案描述符是對應開啟的哪個檔案。在/proc很多時候都是這樣維護的:可能兩個檔案裡面要表示的資訊是一樣的,但是有乙個一般是以人能容易讀懂的格式給出。

limits:這個跟fd有一點關聯,因為這個裡面限制了程序對系統資源的使用額度,比如前面說的你可以開啟多少檔案,具體的設定你可以修改這個檔案/etc/securiry/limits.conf,裡面也對每一項說得很清楚,只要會點e文,理解應該沒問題

oom_adj/oom_score:這兩個與linux的oom機制有關的檔案(關於oom請看這裡),oom_adj相當於乙個因子,它值越大,在oom時更容易被系統kill掉,但最終決定是否被kill的是oom_score,其實計算這個oom_score時,就是根據oom_adj來的,oom_adj更大,計算出來的oom_score就更大,也能容易在oom時被系統kill掉。當然如果是很重要的服務現場,為了避免出現這種情況設定oom_adj=0就行,表示永遠不會因為oom被kill。

stat/status:這兩者要表示的資訊都是一樣的,程序的基本狀態,但是後乙個是以人容易讀懂的格式給出,怎麼分析前者stat的內容-->見這裡。

這裡順便提乙個問題?我們遇到過通過檢視stat裡面的cpu time spent in user code(第14個值)這個值是0,不知道是什麼原因導致的,有誰知道請留個言告訴一下

開始記錄了

開始學習使用 ibm 的 rational functional tester,加牛加牛 以後記錄學習中的一點一滴吧 哈哈 我也開始寫 技術部落格 了 自我陶醉ing.安裝器更新以後莫名其妙的又能用了,所以番茄終於也開始忙碌了。今天解決了乙個問題哦 找到文字物件,呼叫settext方法就可以了。如 ...

我要開始記錄了!

最近頻繁用linux,發現linux還是很好用的,至少比xp快。之前覺得不方便多少是覺得命令很麻煩不想去記,但是習慣之後還是很cool的,也發現大可不必去死記硬背。但是對於linux命令的應用還處於待多學習的階段。決定了,每天積累幾個命令好了。學一學linux下的除錯工具,積少成多,加油加油!每天積...

Linux問題記錄了

manjaro kde 換主題後輸入法黑邊 tim黑邊。a 系統設定 顯示和監控 混成器 渲染後端 xrender manjaro kde 換主題後系統托盤顯示不正常。a 重啟後顯示就從正常了 kde中文顯示為方塊 a 很可能是因為中文字型的丟失造成的,執行如下命令 sudo pacman s wq...