Linux文件系統(tǒng)目錄結構

本文以CentOS系統(tǒng)為例抛虏,但同樣適用于Linux的其他發(fā)行版。不需要糾結于具體的版本套才,了解設計意圖即可迂猴。

本文隨時更新。除勘誤外背伴,不另做批注沸毁。

概覽

image.png
  • 圓型節(jié)點代指目錄,方型節(jié)點代指文件傻寂。
  • 圖中省去了很多不常用的目錄與文件息尺。
  • 稍后單獨講/proc目錄與/var目錄。

Linux將整個文件系統(tǒng)看做一棵樹疾掰,這棵樹的樹根叫做根文件系統(tǒng)搂誉,用"/"表示。

目錄 內容 舉例
/bin 供所有用戶使用的完成基本維護任務的命令 ls, cp
/etc 系統(tǒng)和應用軟件的配置文件 bashrc, passwd
/home 普通用戶的家目錄 /home/msh
/lib 系統(tǒng)最基本的共享鏈接庫和內核模塊 libc-2.17.so
/root root用戶的家目錄 .bashrc, .ssh
/sbin 超級用戶使用的可執(zhí)行文件静檬,里面多是系統(tǒng)管理命令 ifconfig, iptables
/tmp 存儲臨時文件

/usr目錄的目錄結構與根目錄相似勒葱,但根目錄中的文件多是系統(tǒng)級的文件,而/usr目錄中是用戶級的文件巴柿,一般與具體的系統(tǒng)無關凛虽。

目錄 內容 舉例
/usr/bin 多數(shù)日常應用程序存放的位置 yum, git
/usr/include C/C++頭文件 ctype.h
/usr/lib 普通用戶使用的庫文件 mysql的庫文件
/usr/local 個人安裝的軟件,通常需要手動指定广恢;與"/usr"目錄的目錄結構相似
/usr/sbin 超級用戶不需要的系統(tǒng)管理程序 useradd

重中之重

/proc目錄

/proc目錄掛載了一個虛擬文件系統(tǒng)凯旋,以虛擬文件的形式映射系統(tǒng)與進程在內存中的運行時信息。

系統(tǒng)信息

/proc下的直接子目錄通常存儲系統(tǒng)信息。猴子常用的只有兩個:

目錄 內容 舉例
/proc/cpuinfo 處理器的相關信息 physical id至非、cpu cores钠署、siblings、processor
/proc/version 系統(tǒng)的內核版本號 Linux version 3.10.0

/proc/version確定內核版本號和CPU架構(如i686)荒椭;/etc/centos-release確定發(fā)行版本號(其他發(fā)行版類似)谐鼎。

uname -acat /proc/version的作用類似。

進程信息

重點是/proc/<pid>目錄映射的進程信息趣惠。以rsyslogd進程為例:

目錄 內容 舉例
/proc/<pid>/cmdline 啟動當前進程的完整命令 /usr/sbin/rsyslogd-n
/proc/<pid>/cwd 當前進程工作目錄的軟鏈 cwd -> /
/proc/<pid>/environ 當前進程的環(huán)境變量列表 LANG=zh_CN.UTF-8
/proc/<pid>/exe 啟動當前進程的可執(zhí)行文件的軟鏈 exe -> /usr/sbin/rsyslogd
/proc/<pid>/fd 目錄狸棍,保存當前進程持有的文件描述符(以軟鏈形式存在,指向實際文件) 2 -> /dev/null
6 -> /var/log/messages
/proc/<pid>/limits 當前進程使用資源的軟限制味悄、硬限制(和單位) open files(默認軟限制1024)
/proc/<pid>/task 目錄草戈,保存當前進程所運行的每一個線程的相關信息;以<tid>作為各線程的目錄名侍瑟,目錄結構與/proc/<pid>相似 1037唐片、1050、1051

補充幾點:

  • 通過ulimit來查看或修改當前進程的資源限制涨颜。
  • 軟限制可以由進程自己在任何時間修改费韭;硬限制只能使用root權限修改。
  • Linux上進程與線程的關系參考淺談linux線程模型和線程切換庭瑰。

/var目錄

/var目錄存放數(shù)據(jù)文件揽思,如程序數(shù)據(jù)、日志等见擦;但線上通常只將日志放在/var目錄。

系統(tǒng)日志/var/log/messages

通過rsyslog記錄系統(tǒng)級日志羹令,配置文件為/etc/rsyslog.conf鲤屡。重點看/var/log/messages的配置:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.info表示所有服務大于等于info優(yōu)先級的信息都會記錄到/var/log/messages中;
mail.none表示不記錄任何mail的信息到/var/log/messages中福侈。

以上配置表示:除安全認證酒来、郵件、定時任務外肪凛,輸出到stdout堰汉、stderr的info及更高級別的日志記錄在/var/log/messages

OOM kill

猴子利用/var/log/messages定位過一次OOM kill問題伟墙。

一個用戶經(jīng)常抱怨自己的app提到Yarn后翘鸭,container各種exit 137然后重試。假設框架不會自己exit 137玩戳葵,那么通常137代表container是因為kill -9退出就乓,于是mentor提示猴子可能因為OOM kill。要驗證這個想法,必須找到“相關container被OOM kill的痕跡”生蚁。

Linux會監(jiān)控內存使用情況噩翠,當內存不足的時候,OOM killer計算進程的優(yōu)先級邦投,殺死優(yōu)先級最高的進程釋放內存伤锚。而Yarn集群普遍會配置資源超發(fā)(Linux系統(tǒng)本身也存在內存超發(fā)),當集群資源緊張的時候志衣,大container很容易被OOM kill屯援。

OOM kill的三個步驟“發(fā)現(xiàn)內存不足”、“計算優(yōu)先級”蠢涝、“選擇進程kill”玄呛,都會記錄在/var/log/messages,猴子確實在用戶給定的時間點附近找到了對應container的OOM kill日志和二,內存也與container申請的資源相近徘铝。

得證。

判斷過程中存在一些小問題:

  • 猴子根據(jù)container被OOM kill的時間點和內存判斷是否是目標進程惯吕,未嚴格確定惕它。

個人使用時的建議

對于本文的理解,讀者不必關心不同發(fā)行版本废登、內核版本之間的區(qū)別淹魄。

對,是存在區(qū)別的堡距。如:CentOS 6.5可驗證得本文即將講解的目錄結構甲锡;但CentOS 7.2中,/bin等所謂“系統(tǒng)級目錄”都被軟鏈到了/usr/bin等所謂“用戶級目錄”羽戒。其他發(fā)行版如Debian可能差別更大缤沦。

如果非要追究的話,一般建議將所有用戶共享的軟件安裝到/usr/local目錄(結構與/usr目錄相似)下易稠,將用戶私有的軟件安裝到用戶自己的家目錄缸废。


參考:


本文鏈接:Linux文件系統(tǒng)目錄結構
作者:猴子007
出處:https://monkeysayhi.github.io
本文基于 知識共享署名-相同方式共享 4.0 國際許可協(xié)議發(fā)布,歡迎轉載驶社,演繹或用于商業(yè)目的企量,但是必須保留本文的署名及鏈接。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末亡电,一起剝皮案震驚了整個濱河市届巩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌份乒,老刑警劉巖姆泻,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件零酪,死亡現(xiàn)場離奇詭異,居然都是意外死亡拇勃,警方通過查閱死者的電腦和手機四苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來方咆,“玉大人月腋,你說我怎么就攤上這事“曷福” “怎么了榆骚?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長煌集。 經(jīng)常有香客問我妓肢,道長,這世上最難降的妖魔是什么苫纤? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任碉钠,我火速辦了婚禮,結果婚禮上卷拘,老公的妹妹穿的比我還像新娘喊废。我一直安慰自己,他們只是感情好栗弟,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布污筷。 她就那樣靜靜地躺著,像睡著了一般乍赫。 火紅的嫁衣襯著肌膚如雪瓣蛀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天雷厂,我揣著相機與錄音惋增,去河邊找鬼。 笑死罗侯,一個胖子當著我的面吹牛,可吹牛的內容都是我干的溪猿。 我是一名探鬼主播钩杰,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诊县!你這毒婦竟也來了讲弄?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤依痊,失蹤者是張志新(化名)和其女友劉穎避除,沒想到半個月后怎披,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡瓶摆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年凉逛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片群井。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡状飞,死狀恐怖,靈堂內的尸體忽然破棺而出书斜,到底是詐尸還是另有隱情诬辈,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布荐吉,位于F島的核電站焙糟,受9級特大地震影響,放射性物質發(fā)生泄漏样屠。R本人自食惡果不足惜穿撮,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞧哟。 院中可真熱鬧混巧,春花似錦、人聲如沸勤揩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陨亡。三九已至傍衡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間负蠕,已是汗流浹背蛙埂。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遮糖,地道東北人绣的。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像欲账,于是被迫代替她去往敵國和親屡江。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容