主頁 > 作業系統 > linux 系統目錄詳解

linux 系統目錄詳解

2020-09-24 01:24:22 作業系統


目錄
  • linux 系統啟動流程
  • 系統目錄概要說明
  • 系統詳細介紹
    • /etc 檔案系統
    • /dev 檔案系統
    • /usr 檔案系統
    • /var 檔案系統
    • /proc 檔案系統

在早期的 UNIX 系統中,各個廠家各自定義了自己的 UNIX 系統檔案目錄,比較混亂,Linux 面世不久后,對檔案目錄進行了標準化,于1994年對根檔案目錄做了統一的規范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 檔案系統層次結構標準,FHS 標準規定了 Linux 根目錄各檔案夾的名稱及作用,統一了Linux界命名混亂的局面,

FHS 定義了系統中每個區域的用途、所需要的最小構成的檔案和目錄同時還給出了例外處理與矛盾處理, FHS 定義了兩層規范,第一層是, / 下面的各個目錄應該要放什么檔案資料,例如: /etc 應該要放置設定檔案,/bin 與 /sbin 則應該要放置可執行檔案等等,第二層則是針對 /usr 及 /var 這兩個目錄的子目錄來定義,例如: /var/log 放置系統登錄檔案、 /usr/share 放置共享資料等等,

FHS 依據檔案系統使用的頻繁與否以及是否允許用戶隨意改動,將目錄定義為四種互動作用的形態,如下表所示:

可分享(shareable) 不可分享(unshareable)
靜態的(static) /usr 存放軟體
/opt 第三方軟體
/etc 組態檔
/boot 開機及內核檔案
可變的(variable) /var/mail 用戶郵件信箱
/var/news 新聞組
/var/run 程式相關
/var/lock 鎖相關

/:根目錄,一般根目錄下只存放目錄,不要存放件,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個磁區中,

linux 系統啟動流程

linux 啟動流程

  • 系統加電之后,首先進行的硬體自檢,然后是 bootloader 對系統的初始化,加載內核,
  • 內核被加載到記憶體中之后,就開始執行了,一旦內核啟動運行,對硬體的檢測就會決定需要對哪些設備驅動程式進行初始化,
  • 從這里開始,內核就能夠掛裝根檔案系統(這個程序類似于Windows識別并存取C盤的程序),
  • 內核掛裝了根檔案系統,并已初始化所有的設備驅動程式和資料結構等之后,就通過啟動一個叫 init 的用戶級程式,完成引導行程,
  • Init 行程是系統啟動之后的第一個用戶行程,所以它的 pid (行程編號)始終為1,
  • init 行程上來首先做的事是去讀取 /etc/ 目錄下 inittab 檔案中 initdefault id 值,這個值稱為運行級別(run-level),它決定了系統啟動之后運行于什么級別,運行級別決定了系統啟動的絕大部分行為和目的,

運行級別如下表所示:

0 停機(千萬別把initdefault設定為0,否則系統永遠無法啟動)
1 單用戶模式,可以對系統進行軟體維護,
2 多用戶,沒有 NFS,,啟動網路作業站服務, (最后會啟動dtlogin允許圖形界面作業站)
3 完全多用戶模式(標準的運行級)
4 系統保留的
5 X11 (x window)
6 重新啟動 (千萬不要把initdefault 設定為6,否則將一直在重啟 )

系統目錄概要說明

目 錄 全 稱 用 途 說 明
/bin Binary 存放二進制可執行檔案,供所有用戶使用的基本命令一般都在這里, 常用命令 ls,cat,mkdir,cp,rm,netstat,ping,ip,cat,chmod,chown,less,more 等命令存放于此,系統啟動就會用到,不能關聯至獨立磁區,
/sbin Super user Binary 存放二進制可執行檔案,只有root才能訪問, 這里存放的是系統管理員使用的系統級別的管理命令和程式,如 ifconfig,iptables,mkfs,reboot,shutdown,poweroff 等,
/boot 引導檔案存放目錄 內核檔案(vmlinux)、引導加載器(grub)存放于此目錄,建議單獨磁區,磁區大小 100M 即可,
/etc 拉丁語全稱etcetera
另一種說法為Editable Text Configuration
存放系統管理所需的組態檔及目錄 例如:host.conf,adduser.conf 等,重要的組態檔有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d等
/dev device 設備檔案及特殊檔案存盤位置 任何設備與介面設備都以檔案的形式存放在此目錄,相當于設備的入口,通過訪問該目錄下的檔案,就等于訪問對應設備,例如:null,zero,tty,sd*,cpu,char,bus 等,
/sys system 用于輸出當前系統上硬體設備相關資訊的虛擬檔案系統 該檔案系統是內核設備樹的一個直觀反映,當一個內核物件被創建的時候,對應的檔案和目錄也在內核物件子系統中被創建,
/lib library 存放系統最基本的動態連接共享庫 類似于Windows里的DLL檔案
/lib64 64位系統上存放輔助共享庫檔案
/proc process 這是一個虛擬的目錄,它是系統記憶體資料的映射 這個目錄的內容不在硬碟上而是在記憶體里,可以通過直接訪問這個目錄來獲取系統資訊,例如:內核、行程、外部設備的狀態,網路狀態等,
比較重要的目錄有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/ 等,
/usr Unix System Resource 系統應用程式存放目錄,例如 ftp,telnet 等等, /bin 目錄存放系統用戶使用的應用程式,所有用戶可訪問,例如:who,whoami,sudo,users,attr,clear,ssh,gcc,perl,Python等,
/sbin 目錄存放超級用戶使用的比較高級的管理程式和系統守護程式,例如:arp,arpd,adduser,useradd,addgroup,groupdel,chroot,chpasswd等,
/lib 目錄存放應用程式的庫或包檔案,例如:Apache,gcc,Python 等程式的庫檔案,
/lib64 目錄存放64位系統的程式和軟體包的庫檔案,
/include 目錄存放C程式的頭檔案即 .h 檔案,
/share 目錄存放共享資料,/usr/share/doc: 系統說明檔案存放目錄,/usr/share/man: 程式說明檔案存放目錄
/local 目錄是第三方應用程式的安裝位置,包括 bin,sbin,lib,lib64,etc,include等子目錄,
/src 目錄存放源代碼,linux內核的源代碼就放在/usr/src/linux里,
/doc 目錄存放 linux 檔案,
/opt 第三方應用程式的安裝位置 以前的 Linux 系統中,習慣放置在 /usr/local 目錄下,一般情況下,我們可以把 tomcat 等都安裝到這里,
/var variable data file 存放經常變動的檔案 /cache 目錄是應用程式快取目錄,
/local 目錄是專用于 /usr/local 下應用的可變資料
/opt 目錄專用于 /opt 目錄下的程式存盤可變資料,
/lock 目錄用于存放鎖檔案,
/log 目錄 用于存放日志目錄及檔案,/var/log/wtmp記錄系統登錄和注銷日志,/var/log/message記錄核心和系統程式的資訊,
/run 目錄存放運行中的行程相關資料,通常用于存盤行程的 pid 檔案,
/tmp 目錄保存系統兩次重啟之間產生的臨時資料,
/lib 目錄存放系統正常運行時隨時會改變的檔案,
/spool 目錄為應用程式資料池,
/mail 目錄存放用戶郵件檔案,
建議單獨磁區,設定較大的磁盤空間
/root 管理員的根目錄 最好將 /root和 /放置在一個磁區下,
/home 普通用戶的根目錄 建議單獨磁區,并設定較大的磁盤空間,方便用戶存放資料,
/mnt mount 用于臨時掛載其它檔案系統 例如可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內容
/tmp temp 用來存放一些臨時檔案 任何人都可以訪問,重要資料不可放置在此目錄下
/media 用于將識別的設備掛載到這個目錄下 linux系統會自動識別一些設備,例如U盤、光驅等等,當識別后,linux會把識別的設備掛載到這個目錄下,
/srv service 存放一些服務啟動之后需要提取的資料 如 www 服務需要訪問的網頁資料存放在 /srv/www 內

系統詳細介紹

/etc 檔案系統

/etc 目錄包含各種系統組態檔,下面說明其中的一些,其他的你應該知道它們屬于哪個程式,并閱讀該程式的man頁,許多網路組態檔也在 /etc 中,

  1. /etc/rc 或 /etc/rc.d 或 /etc/rc?.d

    rc.d 是 runlevel control directory 的縮寫,

    /etc/rc.d/rc0.d - rc6.d 各啟動級別的啟動腳本,這些檔案夾下的 init 腳本都有一些特別的名字,命名都以S(start)、K(kill)或 D(disable)開頭,后面跟一個數字,當init進入一個運行等級的時候,它會按照數字順序運行所有以 K 開頭的腳本并傳入 stop 引數,除非對應的 init 腳本在前一個運行等級中沒有啟動,然后 init 按照數字順序運行所有以 S 開頭的腳本并傳入 start 引數,任何以 D 開頭的 init 腳本都會被忽略—這讓你可以在指定的運行等級禁止一個腳本,或者你也可以僅僅移除全部符號鏈接,所以如果你有兩個腳本,S01foo 和 S05bar, init 首先會運行 S01foo start,當它進入特定的運行等級后再執行 S05bar start,

    /etc/rc.d/rcS.d 單用戶模式啟動腳本,

    /etc/rc.d/rc.local 通常它是一個留給用戶修改的shell腳本,一般會在init行程結束的時候運行它,所以你可以在這里放一些想要運行的額外腳本,而不用再創建自己的init腳本,

    /etc/rc.d/rc.sysinit 檔案主要做在各個運行模式中相同的初始化作業,包括設定 PATH、設定網路配置(/etc/sysconfig/network)、啟動 swap 磁區、設定 /proc 等等,

    /etc/rc.d/rc 檔案當運行級別改變時,負責啟動/停止各種服務,

  2. /etc/init 或 /etc/init.d

    init 檔案夾包含所有服務在各個運行等級中的全部啟動腳本,一般來說,它們都是標準的 shell 腳本,遵守最基本的標準,每個腳本最少接受兩個引數 start 和 stop,它們分別代表啟動和停止服務 (如網頁服務),除此之外,init腳本通常還會接受一些額外的選項,如 restart(重啟服務器)、status(回傳服務當前狀態)、reload(告知服務從組態檔中重新載入配置)以及 force-reload(強制服務多載它的配置),當用不帶引數的方式運行腳本的時候,一般應該回傳一個它會接受的引數串列,

    init.d 目錄存放的是一些腳本,一般是 linux 以 rpm 包安裝時設定的一些服務的啟動腳本,系統在安裝時裝了好多rpm 包,這里面就有很多對應的腳本,執行這些腳本可以用來啟動,停止,重啟這些服務,前面說到,init.d 這個目錄下的腳本就類似與 windows 中的注冊表,在系統啟動的時候執行,

  3. /etc/inittab
    init 行程的組態檔,

  4. /etc/passwd
    用戶資料庫,其中的域給出了用戶名、真實姓名、用戶起始目錄、加密口令和用戶的其 他資訊,

  5. /etc/fdprm
    軟盤引數表,用以說明不同的軟盤格式,可用 setfdprm 進行設定,

  6. /etc/fstab
    指定啟動時需要自動安裝的檔案系統串列,啟動時 mount -a 命令(在 /etc/rc 或等效的啟動檔案中)自動 mount 的檔案系統串列也包括用 swapon -a 啟用的 swap 區的資訊,

  7. /etc/group/etc/adduser.conf/etc/deluser.conf/etc/sudoers
    類似 /etc/passwd ,但說明的不是用戶資訊而是組的資訊,包括組的各種資料,

    添加的用戶資訊,洗掉用戶資訊,

    具有sodu執行權限的用戶資訊,

  8. /etc/issue
    包括用戶在登錄提示符前的輸出資訊,通常包括系統的一段短說明或歡迎資訊,具體內容由系統管理員確定,

  9. /etc/magic
    “file” 的組態檔,包含不同檔案格式的說明,“file” 基于它猜測檔案型別,

  10. /etc/motd
    motd 是 message of the day 的縮寫,用戶成功登錄后自動輸出,內容由系統管理員確定,常用于通告資訊,如計劃關機時間的警告等,

  11. /etc/mtab
    當前安裝的檔案系統串列,由腳本( scritp )初始化,并由 mount 命令自動更新,當需要一個當前安裝的檔案系統的串列時使用(例如 df 命令),

  12. /etc/shadow
    在安裝了影子( shadow )口令軟體的系統上的影子口令檔案,影子口令檔案將 /etc/passwd 檔案中的加密口令移動到 /etc/shadow 中,而后者只對超級用戶( root )可讀,這使破譯口令更困難,以此增加系統的安全性,

  13. /etc/login.defs
    login 命令的組態檔,

  14. /etc/printcap
    類似 /etc/termcap ,但針對列印機,語法不同,

  15. /etc/profile 、/etc/csh.login、/etc/csh.cshrc

    /etc/profile 系統全域環境變數設定,里面可以添加對所有用戶有效的環境變數,系統配置等,

    登錄或啟動時 bourne 或 c shells執行的檔案,這允許系統管理員為所有用戶建立全域預設環境,

  16. /etc/securetty
    確認安全終端,即哪個終端允許超級用戶( root )登錄,一般只列出虛擬控制臺,這樣就不可能(至少很困難)通過調制解調器( modem )或網路闖入系統并得到超級用戶特權,

  17. /etc/shells
    列出可以使用的 shell,chsh 命令允許用戶在本檔案指定范圍內改變登錄的 shell,提供一臺機器 ftp 服務的服務行程 ftpd 檢查用戶 shell 是否列在 /etc/shells 檔案中,如果不是,將不允許該用戶登錄,

  18. /etc/termcap
    終端性能資料庫,說明不同的終端用什么“轉義序列”控制,寫程式時不直接輸出轉義序列(這樣只能作業于特定品牌的終端),而是從 /etc/termcap 中查找要做的作業的正確序列,這樣,多數的程式可以在多數終端上運行,

  19. /etc/bash.bashrc bash 的環境變數配置,里面添加啟動bash時讀取的環境,

  20. /etc/hosts 主機域名的配置,

  21. /etc/ld.so.cof ldconfig命令讀取的系統庫目錄組態檔,/etc/ld.so.cache ldconfig命令讀取的系統庫路徑生成的快取檔案,

  22. /etc/sysctl.conf 系統內核的組態檔,

  23. /etc/protocols 系統支持的ip協議簇,

  24. /etc/timezone 系統的時間時區設定,

/dev 檔案系統

? /dev 目錄包括所有設備的設備檔案,設備檔案用特定的約定命名,這在設備串列中說明,設備檔案在安裝時由系統產生,以后可以用 /dev/makedev 描述,/dev/makedev.local 是系統管理員為本地設備檔案(或連接)寫的描述文稿(即如一些非標準設備驅動不是標準 makedev 的一部分),下面簡要介紹 /dev 下一些常用檔案,

  1. /dev/console
    系統控制臺,也就是直接和系統連接的監視器,

  2. /dev/hd[a-t]
    ide 硬碟驅動程式介面,如:/dev/hda 指的是第一個硬碟,had1 則是指 /dev/hda 的第一個磁區,如系統中有其他的硬碟,則依次為 /dev/hdb、/dev/hdc、. . . . .;如有多個磁區則依次為 hda1、hda2 . . . . . .

  3. /dev/sd[a-z]
    scsi 磁盤驅動程式介面,如有系統有 scsi 硬碟,就不會訪問 /dev/had,而會訪問 /dev/sda,

  4. /dev/fd[0-7]
    軟驅設備驅動程式,如:/dev/fd0 指系統的第一個軟盤,也就是通常所說的 a:盤,/dev/fd1 指第二個軟盤,. . . . . .而 /dev/fd1h1440 則表示訪問驅動器1中的4.5高密盤,

  5. /dev/st
    scsi 磁帶驅動器驅動程式,

  6. /dev/tty
    提供虛擬控制臺支持,如:/dev/tty1 指的是系統的第一個虛擬控制臺,/dev/tty2 則是系統的第二個虛擬控制臺,

  7. /dev/pty
    提供遠程登陸偽終端支持,在進行 telnet 登錄時就要用到 /dev/pty 設備,

  8. /dev/ttys
    計算機串行介面,對于 dos 來說就是“ c o m 1”口,

  9. /dev/cua
    計算機串行介面,與調制解調器一起使用的設備,

  10. /dev/null
    “黑洞”,所有寫入該設備的資訊都將消失,例如:當想要將螢屏上的輸出資訊隱藏起來時,只要將輸出資訊輸入到 /dev/null 中即可,

  11. /dev/zero

    該設備無窮盡地提供空字符(ASCII NUL, 0x00),可以使用任何你需要的數目,它通常用于向設備或檔案寫入字串0,用于初始化資料存盤,(當然,也可作為輸出流的接受容器)

  12. /dev/lp[0-3]

    并口

  13. /dev/loop[0-7]

    本地回環設備

  14. /dev/md[0-31]

    軟raid設備

  15. /dev/random、/dev/urandom

    亂數設備,

  16. /dev/shm

    這個目錄不在硬碟上,而是在記憶體里,默認系統就會加載/dev/shm ,它就是所謂的tmpfs,因此在 linux下,就不需要大費周折去建 ramdisk,直接使用 /dev/shm/ 就可達到很好的優化效果,它默認最大為記憶體的一半大小,使用df -h命令可以看到,但它并不會真正的占用這塊記憶體,如果/dev/shm/下沒有任何檔案,它占用的記憶體實際上就是0位元組;如果它最大為 1G,里頭放有 100M 檔案,那剩余的900M 仍然可為其它應用程式所使用,但它所占用的 100M 記憶體,是絕不會被系統回收重新劃分的,象虛擬磁盤一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換磁區來存盤,而且傳統的虛擬磁盤是個塊設備,并需要一個 mkfs 之類的命令才能真正地使用它,tmpfs 是一個檔案系統,而不是塊設備;您只是安裝它,它就可以使用了,

tty是teletypewriter的縮寫 [ 轉自:http://blog.chinaunix.net/uid-8194676-id-2513202.html ]

  揭秘 TTY 見:http://www.linusakesson.net/programming/tty/

getty 是 get teletypewriter 的縮寫

  終端是一種字符型設備,它有多種型別,通常使用 tty 來簡稱各種型別的終端設備,tty 是 teletypewriter 的縮寫,Teletype 是最早出現的一種終端設備,很象電傳打字機,是由 Teletype 公司生產的,設備名放在特殊檔案目錄 /dev/ 下,終端特殊設備檔案一般有以下幾種:

  1. 串行埠終端(/dev/ttySn)
  串行埠終端(Serial Port Terminal)是使用計算機串行埠連接的終端設備,計算機把每個串行埠都看作是一個字符設備,有段時間這些串行埠設備通常被稱為終端設備,因為那時它的最大用途就是用來連接終端,這些串行埠所對應的設備名稱是 /dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或 /dev/ttyS1)等,設備號分別是(4,0)、(4,1)等,分別對應于 DOS 系統下的 COM1、COM2 等,若要向一個埠發送資料,可以在命令列上把標準輸出重定向到這些特殊檔案名上即可,例如,在命令列提示符下鍵入:echo test > /dev/ttyS1 會把單詞 ”test” 發送到連接在 ttyS1(COM2)埠的設備上,
  2. 偽終端(/dev/pty/)
  偽終端(Pseudo Terminal)是成對的邏輯終端設備,例如 /dev/ptyp3 和 /dev/ttyp3(或著在設備檔案系統中分別是 /dev/pty/m3和/dev/pty/s3),它們與實際物理設備并不直接相關,如果一個程式把 ttyp3 看作是一個串行埠設備,則它對該埠的讀/寫操作會反映在該邏輯終端設備對的另一個上面( ttyp3 ),而 ttyp3 則是另一個程式用于讀寫操作的邏輯設備,這樣,兩個程式就可以通過這種邏輯設備進行互相交流,而其中一個使用 ttyp3 的程式則認為自己正在與一個串行埠進行通信,這很象是邏輯設備對之間的管道操作,
  對于 ttyp3(s3),任何設計成使用一個串行埠設備的程式都可以使用該邏輯設備,但對于使用 ptyp3 的程式,則需要專門設計來使用 ptyp3(m3)邏輯設備,
  例如,如果某人在網上使用 telnet 程式連接到你的計算機上,則telnet程式就可能會開始連接到設備ptyp2(m2)上(一個偽終端埠上),此時一個 getty 程式就應該運行在對應的 ttyp2(s2)埠上,當telnet 從遠端獲取了一個字符時,該字符就會通過 m2、s2 傳遞給 getty 程式,而 getty 程式就會通過 s2、m2 和 telnet 程式往網路上回傳 ”login:” 字串資訊,這樣,登錄程式與 telnet 程式就通過“偽終端”進行通信,通過使用適當的軟體,就可以把兩個甚至多個偽終端設備連接到同一個物理串行埠上,
  在使用設備檔案系統(device filesystem)之前,為了得到大量的偽終端設備特殊檔案,HP-UX AIX等使用了比較復雜的檔案名命名方式,
  3. 控制終端(/dev/tty)
  如果當前行程有控制終端(Controlling Terminal)的話,那么 /dev/tty 就是當前行程的控制終端的設備特殊檔案,可以使用命令”ps –ax”來查看行程與哪個控制終端相連,對于你登錄的 shell,/dev/tty 就是你使用的終端,設備號是(5,0),使用命令”tty”可以查看它具體對應哪個實際終端設備,/dev/tty 有些類似于到實際所使用終端設備的一個聯接,
  4. 控制臺終端(/dev/ttyn, /dev/console)
  在 UNIX 系統中,計算機顯示幕通常被稱為控制臺終端(Console),它仿真了型別為Linux的一種終端(TERM=Linux),并且有一些設備特殊檔案與之相關聯:tty0、tty1、tty2等,當你在控制臺上登錄時,使用的是 tty1,使用 Alt+[F1—F6] 組合鍵時,我們就可以切換到 tty2、tty3 等上面去,tty1 –tty6 等稱為虛擬終端,而 tty0 則是當前所使用虛擬終端的一個別名,系統所產生的資訊會發送到該終端上,因此不管當前正在使用哪個虛擬終端,系統資訊都會發送到控制臺終端上,
  你可以登錄到不同的虛擬終端上去,因而可以讓系統同時有幾個不同的會話期存在,只有系統或超級用戶root 可以向 /dev/tty0 進行寫操作,
  5. 其它型別
  還針對很多不同的字符設備存在有很多其它種類的終端設備特殊檔案,例如針對 ISDN 設備的 /dev/ttyIn 終端設備等,這里不再贅述,


tmpfs 的優勢

  1,動態檔案系統的大小,

  2,tmpfs 的另一個主要的好處是它閃電般的速度,因為典型的 tmpfs 檔案系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的,

  3,tmpfs 資料在重新啟動之后不會保留,因為虛擬記憶體本質上就是易失的,所以有必要做一些腳本做諸如加載,系結的操作,

一、修改 /dev/shm 大小

  默認的最大一半記憶體大小在某些場合可能不夠用,并且默認的 inode 數量很低一般都要調高些,這時可以用mount 命令來管理它,

  #mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

  在 2G 的機器上,將最大容量調到 1.5G,并且 inode 數量調到 1000000,這意味著大致可存入最多一百萬個小檔案,

  如果需要永久修改 /dev/shm 的值,需要修改 /etc/fstab

  tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0

  #mount -o remount /dev/shm

二、/dev/shm 應用

  首先在 /dev/shm 建個 tmp 檔案夾,然后與實際 /tmp 系結

  #mkdir /dev/shm/tmp

  #chmod 1777 /dev/shm/tmp

  #mount –bind /dev/shm/tmp /tmp(–bind )

  在使用 mount –bind olderdir newerdir命令來掛載一個目錄到另一個目錄后,newerdir 的權限和所有者等所有資訊會發生變化,掛載后的目錄繼承了被掛載目錄的所有屬性,除了名稱,Oracle 11g 的 amm 記憶體管理模式就是使用 /dev/shm,所以有時候修改 MEMORY_TARGET 或者 MEMORY_MAX_TARGET 會出現 ORA-00845 的錯誤,

/usr 檔案系統

/usr 是個很重要的目錄,通常這一檔案系統很大,因為所有程式安裝在這里,/usr 里的所有檔案一般來自 linux 發行版( distribution);本地安裝的程式和其他東西在 /usr/local 下,因為這樣可以在升級新版系統或新發行版時無須重新安裝全部程式,/usr 目錄下的許多內容是可選的,但這些功能會使用戶使用系統更加有效,/usr 可容納許多大型的軟體包和它們的組態檔,下面列出一些重要的目錄(一些不太重要的目錄被省略了),

  1. /usr/x11r6
    包含 x window 系統的所有可執行程式、組態檔和支持檔案,之所以取名為 X11R6 是因為最后的X版本為第11版,且該版的第6次釋出之意,為簡化 x 的開發和安裝,x 的檔案沒有集成到系統中,x window 系統是一個功能強大的圖形環境,提供了大量的圖形工具程式,用戶如果對 microsoft windows 或 machintosh 比較熟悉的話,就不會對 xwindow 系統感到束手無策了,

  2. /usr/x386
    類似 /usr/x11r6,但是是專門給 x 11 release 5 的,

  3. /usr/bin
    集中了幾乎所有用戶命令,是系統的軟體庫,另有些命令在 /bin 或 /usr/local/bin 中,

  4. /usr/sbin
    包括了根檔案系統不必要的系統管理命令,例如多數服務程式,

  5. /usr/man、/usr/info、/usr/doc
    這些目錄包含所有手冊頁、gnu 資訊檔案和各種其他檔案檔案,每個聯機手冊的“節”都有兩個子目錄,例如:/usr/man/man1 中包含聯機手冊第一節的原始碼(沒有格式化的原始檔案),/usr/man/cat1 包含第一節已格式化的內容,聯機手冊分為以下九節:內部命令、系統呼叫、庫函式、設備、檔案格式、游戲、宏軟體包、系統管理和核心程式,

  6. /usr/include
    包含了 c 語言的頭檔案,這些檔案多以 . h 結尾,用來描述 c 語言程式中用到的資料結構、子程序和常量,為了保持一致性,這實際上應該放在 /usr/lib 下,但習慣上一直沿用了這個名字,

  7. /usr/lib
    lib 是 library 的簡寫,存放的是各應用軟體的元件以及一些不被一般使用者慣用的執行檔或腳本(script),編程的原始庫也存在 /usr/lib 里,當編譯程式時,程式便會和其中的庫進行連接,也有許多程式把組態檔存入其中,

  8. /usr/local
    系統管理員在本機安裝下載的軟體(非 distribution 默認提供者),建議安裝到此目錄, 這樣會比較便于管理,舉例來說,你的 distribution 提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝于 /usr/local/ 目錄下,可與原先的舊版軟體有分別啦, 你可以自行到 /usr/local 去看看,該目錄下也是具有 bin, etc, include, lib...的次目錄,

  9. /usr/share

    放置共享檔案的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文本檔案,在此目錄下常見的還有這些次目錄:/usr/share/man:聯機幫助檔案;/usr/share/doc:軟體雜項的檔案說明;/usr/share/zoneinfo:與時區有關的時區檔案,

  10. /usr/src

    src 是 source 的縮寫,一般原始碼建議放置到這里,至于核心原始碼則建議放置到 /usr/src/linux/ 目錄下,

/var 檔案系統

/var 包含系統一般運行時要改變的資料,通常這些資料所在的目錄的大小是要經常變化或擴充的,原來 /var 目錄中有些內容是在 /usr 中的,但為了保持 /usr 目錄的相對穩定,就把那些需要經常改變的目錄放到 /var 中了,每個系統是特定的,即不通過網路與其他計算機共享,下面列出一些重要的目錄(一些不太重要的目錄省略了),

  1. /var/catman
    包括了格式化過的幫助( man )頁,幫助頁的源檔案一般存在 /usr/man/man 中;有些 man 頁可能有預格式化的版本,存在 /usr/man/cat 中,而其他的 man 頁在第一次看時都需要格式化,格式化完的版本存在 /var/man 中,這樣其他人再看相同的頁時就無須等待格式化了,( /var/catman 經常被清除,就像清除臨時目錄一樣,)

  2. /var/lib
    程式執行的程序中,需要使用到的資料檔案放置的目錄,在此目錄下各自的軟體應該要有各自的目錄, 舉例來說,MySQL 的資料庫放置到 /var/lib/mysql/ 而 rpm 的資料庫則放到 /var/lib/rpm 中,

  3. /var/local
    存放 /usr/local 中安裝的程式的可變資料(即系統管理員安裝的程式),注意,如果必要,即使本地安裝的程式也會使用其他 /var 目錄,例如 /var/lock ,

  4. /var/lock
    鎖檔案,許多程式遵循在 /var/lock 中產生一個鎖定檔案的約定,以用來支持他們正在使用某個特定的設備或檔案,其他程式注意到這個鎖定檔案時,就不會再使用這個設備或檔案,

  5. /var/log
    各種程式的日志( log )檔案,尤其是 login( /var/log/wtmp log紀錄所有到系統的登錄和注銷) 和 syslog ( /var/log/messages 紀錄存盤所有核心和系統程式資訊),/var/log 里的檔案經常不確定地增長,應該定期清除,

  6. /var/run
    保存在下一次系統引導前有效的關于系統的資訊檔案,例如, /var/run/utmp 包含當前登錄的用戶的資訊,某些程式或者是服務啟動后,會將他們的PID放置在這個目錄下,

  7. /var/spool
    放置“假脫機( spool )”程式的目錄,如mail、news、列印佇列和其他佇列作業的目錄,每個不同的 spool 在 /var/spool 下有自己的子目錄,例如,用戶的郵箱就存放在 /var/spool/mail 中,

  8. /var/tmp
    比 /tmp 允許更大的或需要存在較長時間的臨時檔案,注意系統管理員可能不允許 /var/tmp 有很舊的檔案,

  9. /var/cache

    應用程式運行程序中會產生的一些暫存檔,

/proc 檔案系統

/proc 檔案系統是一個偽檔案系統,它并不存在磁盤上,只存在記憶體當中,它以檔案系統的方式為訪問系統內核資料的操作提供介面,用戶和應用程式可以通過 proc得到系統的資訊,并可以改變內核的某些引數,下面說明一些最重要的檔案和目錄( /proc 檔案系統在 proc man 頁中有更詳細的說明),

  1. /proc/cmdline

    這個檔案給出了內核啟動的命令列,它和用于行程的cmdline項非常相似,

  2. /proc/x
    關于行程x的資訊目錄,這一x是這一行程的標識號,每個行程在/proc 下有一個名為自己行程號的目錄,

  3. /proc/cpuinfo
    存放處理器(CPU)的資訊,如 cpu 的型別、制造商、型號和性能等,

  4. /proc/meminfo
    這個檔案給出了記憶體狀態的資訊,它顯示出系統中空閑記憶體,已用物理記憶體和交換記憶體的總量,它還顯示出內核使用的共享記憶體和緩沖區總量,這些資訊的格式和free命令顯示的結果類似,

  5. /proc/devices
    當前運行的核心配置的設備驅動的串列,

  6. /proc/dma
    這個檔案列出由驅動程式保留的DMA通道和保留它們的驅動程式名稱,

  7. /proc/filesystems
    這個檔案列出可供使用的檔案系統型別,一種型別一行,雖然它們通常是編入內核的檔案系統型別,但該檔案還可以包含可加載的內核模塊加入的其它檔案系統型別,

  8. /proc/interrupts
    顯示被占用的中斷資訊和占用者的資訊,以及被占用的數量,這個檔案的每一行都有一個保留的中斷,每行中的域有:中斷號,本行中斷的發生次數,可能帶有一個加號的域(SA_INTERRUPT標志設定),以及登記 這個中斷的驅動程式的名字,可以在安裝新硬體前,像查看 /proc/dma和/proc/ioports 一樣用 cat 命令手工查看手頭的這個檔案,這個檔案列出了當前投入使用的資源(但是不包括那些沒有加載驅動程式的硬體所使用的資源),

  9. /proc/ioports
    當前使用的 i/o 埠,這個檔案列出了諸如磁盤驅動器,以太網卡和聲卡設備等多種設備驅動程式登記的許多I/O埠范圍,

  10. /proc/kcore
    系統物理記憶體映像,與物理記憶體大小完全一樣,然而實際上沒有占用這么多記憶體;它僅僅是在程式訪問它時才被創建,(注意:除非你把它拷貝到什么地方,否則 /proc 下沒有任何東西占用任何磁盤空間,)

  11. /proc/kmsg
    這個檔案用于檢索用 printk 生成的內核訊息,任何時刻只能有一個具有超級用戶權限的行程可以讀取這個檔案,也可以用系統呼叫syslog檢索這些訊息,通常使用工具dmesg或守護行程klogd檢索這些訊息,

  12. /proc/ksyms
    核心符號表,這個檔案列出了已經登記的內核符號;這些符號給出了變數或函式的地址,每行給出一個符號的地址,符號名稱以及登記這個符號的模塊,程式ksyms,insmod和kmod使用這個檔案,它還列出了正在運行的任務數,總任務數和最后分配的PID,

  13. /proc/loadavg
    這個檔案給出以幾個不同的時間間隔計算的系統平均負載,這就如同uptime命令顯示的結果那樣,前三個數字是平均負載,這是通過計算過去1分鐘,5分鐘,15分鐘里運行佇列中的平均任務數得到的,隨后是正在運行的任務數和總任務數,最后是上次使用的行程號,

  14. /proc/modules
    存放當前加載了哪些核心模塊資訊,

  15. /proc/mounts

    這個檔案以 /etc/mtab 檔案的格式給出當前系統所安裝的檔案系統資訊,這個檔案也能反映出任何手工安裝從而在 /etc/mtab 檔案中沒有包含的檔案系統,

  16. /proc/misc

    這個檔案報告用內核函式misc_register登記的設備驅動程式,

  17. /proc/net
    此目錄下的檔案描述或修改了聯網代碼的行為,可以通過使用arp,netstat,route和ipfwadm命令設定或查詢這些特殊檔案中的許多檔案,

  18. /proc/self
    存放到查看 /proc 的程式的行程目錄的符號連接,當2個行程查看 /proc 時,這將會是不同的連接,這主要便于程式得到它自己的行程目錄,

  19. /proc/stat
    這個檔案包含的資訊有 CPU 利用率,磁盤,記憶體頁,記憶體對換,全部中斷,接觸開關以及啟動時間(自1970年1月1日起的秒數),

  20. /proc/uptime
    系統啟動的時間長度,

  21. /proc/version
    核心版本

  22. /proc/locks

    這個檔案包含在打開的檔案上的加鎖資訊,檔案中的每一行描述了特定檔案和檔案上的加鎖資訊以及對檔案施加的鎖的型別,內核也可以需要時對檔案施加強制性鎖,

  23. /proc/pci

    這個檔案給出PCI設備的資訊,用它可以方便地診斷PCI問題,你可以從這個檔案中檢索到的資訊包括諸如IDE介面或USB控制器這樣的設備,總線,設備和功能編號,設備延遲以及IRQ編號,

  24. /proc/scsi

    此目錄下包含一個列出了所有檢測到的SCSI設備的檔案,并且為每種控制器驅動程式提供一個目錄,在這個目錄下又為已安裝的此種控制器的每個實體提供一個子目錄,

  25. /proc/sys

    在此目錄下有許多子目錄,此目錄中的許多項都可以用來調整系統的性能,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/115532.html

標籤:Linux

上一篇:Linux 常見縮寫命令英文全稱

下一篇:作業系統-記憶體換出

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more