linux的目录proc pid,Linux /proc第一篇----/proc/pid记录了什么
由于自己Linux系統(tǒng)知識(shí)基礎(chǔ)比較薄弱,準(zhǔn)備比較全面學(xué)習(xí),準(zhǔn)備從/proc這個(gè)目錄開始。實(shí)際上這個(gè)目錄也基本上記錄所有系統(tǒng)運(yùn)行時(shí)和內(nèi)核的一些信息,所以如果想對(duì)linux系統(tǒng)有一個(gè)比較全面的了解,從/proc入手應(yīng)該是個(gè)不錯(cuò)的選擇。準(zhǔn)備將自己學(xué)習(xí)的過程記錄下來,分享給同樣需要的朋友,也便于以后查閱。今天準(zhǔn)備介紹一下/proc/pid這個(gè)目錄到底是做什么用的,它到底記錄了哪些信息。
cd /proc/之后,你會(huì)發(fā)現(xiàn)很多的目錄和文件,今天首先來介紹的就是那些以數(shù)字命名的目錄--它們就是linux中的進(jìn)程號(hào),每當(dāng)你創(chuàng)建一個(gè)進(jìn)程時(shí),里面就會(huì)動(dòng)態(tài)更新多出一個(gè)名稱為pid的目錄,然后你ls -l /proc/pid會(huì)發(fā)現(xiàn)如下信息:
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
下面我們挑常用的來解釋(用紅色標(biāo)注出)
cmdline:這個(gè)主要是當(dāng)前這個(gè)進(jìn)程被運(yùn)行時(shí)的command line,里面包括了運(yùn)行時(shí)指定的一些參數(shù),比如如果是mysqld的話就包括basedir==,datadir==,port=,socket=等等信息,你可以自己嘗試一下。
cwd:current working directory,當(dāng)前的工作目錄
environ:這是個(gè)比較有用的文件,里面記錄了當(dāng)前進(jìn)程的一些環(huán)境變量,比如一臺(tái)機(jī)器上對(duì)同一個(gè)系統(tǒng)起多個(gè)實(shí)例(當(dāng)然是不同端口、不同數(shù)據(jù)目錄),而你想知道哪個(gè)進(jìn)程對(duì)應(yīng)的是在哪個(gè)數(shù)據(jù)目錄起來的(可能是因?yàn)槟阆雓ill-9其中一個(gè)實(shí)例,因?yàn)槟闩屡e(cuò),所以的確定哪個(gè)進(jìn)程是對(duì)應(yīng)哪個(gè)數(shù)據(jù)目錄),那么此時(shí)你該怎么辦呢?兩者方法:1.strings /proc/pid/environ | grep PWD 2.tr \\0 \\n < /proc/pid/envrion | grep PWD 即可。當(dāng)然里面還有很多的信息,你可以自己嘗試。
exe:這個(gè)就是氣這個(gè)進(jìn)程的執(zhí)行文件
fd:進(jìn)程打開的文件描述符,我記得以前有人使用mysql遇到過two many openfiles的錯(cuò)誤,這個(gè)就是打開太多的文件導(dǎo)致的,當(dāng)然你如果只修改mysql里面的參數(shù)可能不會(huì)起作用,因?yàn)榭赡躱s上設(shè)置了一個(gè)比較小的數(shù),所以要兩者都調(diào)大。
fdinfo:跟上面一個(gè)一樣,只不過只有文件描述符的值,沒有表示這個(gè)文件描述符是對(duì)應(yīng)打開的哪個(gè)文件。在/proc很多時(shí)候都是這樣維護(hù)的:可能兩個(gè)文件里面要表示的信息是一樣的,但是有一個(gè)一般是以人能容易讀懂的格式給出。
limits:這個(gè)跟fd有一點(diǎn)關(guān)聯(lián),因?yàn)檫@個(gè)里面限制了進(jìn)程對(duì)系統(tǒng)資源的使用額度,比如前面說的你可以打開多少文件,具體的設(shè)定你可以修改這個(gè)文件/etc/securiry/limits.conf,里面也對(duì)每一項(xiàng)說得很清楚,只要會(huì)點(diǎn)E文,理解應(yīng)該沒問題
oom_adj/oom_score:這兩個(gè)與linux的OOM機(jī)制有關(guān)的文件(關(guān)于OOM請(qǐng)看這里),oom_adj相當(dāng)于一個(gè)因子,它值越大,在OOM時(shí)更容易被系統(tǒng)kill掉,但最終決定是否被kill的是oom_score,其實(shí)計(jì)算這個(gè)oom_score時(shí),就是根據(jù)oom_adj來的,oom_adj更大,計(jì)算出來的oom_score就更大,也能容易在OOM時(shí)被系統(tǒng)kill掉。當(dāng)然如果是很重要的服務(wù)現(xiàn)場(chǎng),為了避免出現(xiàn)這種情況設(shè)置oom_adj=0就行,表示永遠(yuǎn)不會(huì)因?yàn)镺OM被kill。
stat/status:這兩者要表示的信息都是一樣的,進(jìn)程的基本狀態(tài),但是后一個(gè)是以人容易讀懂的格式給出,怎么分析前者stat的內(nèi)容-->見這里。
這里順便提一個(gè)問題?我們遇到過通過查看stat里面的CPU time spent in user code(第14個(gè)值)這個(gè)值是0,不知道是什么原因?qū)е碌?#xff0c;有誰知道請(qǐng)留個(gè)言告訴一下
當(dāng)然你會(huì)發(fā)現(xiàn)我還有很多的項(xiàng)沒介紹?最主要的原因是有些我也不懂,其次,對(duì)于新手了解這些最常用的應(yīng)該暫時(shí)足夠了,等以后自己對(duì)它了解了再慢慢更新上來。當(dāng)然如果你了解那些我沒提到的目錄、文件,歡迎大家留言互相交流~
參考文章:
總結(jié)
以上是生活随笔為你收集整理的linux的目录proc pid,Linux /proc第一篇----/proc/pid记录了什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 虚拟机新增磁盘,linux(
- 下一篇: linux核能软件,ARM big.LI