對於每一個初學Linux系統的初學者來說,瞭解Linux的目錄結構是第一步也是關鍵一步,下圖是Linux系統的樹狀目錄結構
/bin目錄:
bin爲binary的縮寫,主要放置系統的必要執行文件,例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等
/boot目錄:
boot是引導程序,內核的存放的目錄。此目錄包含了在引導過程中所必須的文件,引導程序的相關文件(如:grup、kernel、lilo以及相應的配置文件及Linux操作系統內核相關文件;sbin超級用戶可以使用的命令存放目錄。存放大多數涉及系統管理命令,如:引導系統的init程序,是超級用戶root的可執行命令存放地,普通用戶無權限)
[root@linuxprobe Desktop]# ls /boot
config-3.10.0-123.el7.x86_64
grub2
initramfs-0-rescue-c0dfe5671a8c40a7a4eaf2c389476e05.img
initramfs-3.10.0-123.el7.x86_64.img
initramfs-3.10.0-123.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-123.el7.x86_64.gz
System.map-3.10.0-123.el7.x86_64
vmlinuz-0-rescue-c0dfe5671a8c40a7a4eaf2c389476e05
vmlinuz-3.10.0-123.el7.x86_64
[root@linuxprobe Desktop]#
/dev目錄:
用於存放設備文件的目錄,dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因爲在這個目錄中包含了所有Linux系統中使用的外部設備。但是這裏並不是放的外部設備的驅動程序,這一點和windows,dos操作系統不一樣。它實際上是一個訪問這些外部設備的端口。我們可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。
[linuxprobe@linuxprobe Desktop]$ ls /dev
agpgart kmsg rtc0 tty20 tty45 ttyS3
autofs log sda tty21 tty46 uhid
block loop-control sda1 tty22 tty47 uinput
bsg lp0 sda2 tty23 tty48 urandom
btrfs-control lp1 sg0 tty24 tty49 usbmon0
bus lp2 sg1 tty25 tty5 usbmon1
cdrom lp3 shm tty26 tty50 usbmon2
char mapper snapshot tty27 tty51 vcs
console mcelog snd tty28 tty52 vcs1
...
robe@linuxprobe Desktop]$
/etc目錄:
用來存放程序所需的整個文件系統的配置文件
[linuxprobe@linuxprobe Desktop]$ ls /etc
abrt httpd printcap
adjtime idmapd.conf profile
aliases init.d profile.d
aliases.db inittab protocols
alsa inputrc pulse
alternatives iproute2 purple
amanda ipsec.conf qemu-ga
anacrontab ipsec.d qemu-kvm
...
[linuxprobe@linuxprobe Desktop]$
/e**tc/rc or/etc/rc.d or/etc/rc*.d
啓動、或改變運行級時運行的scripts或scripts的目錄.
/etc/passwd
用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息.
/etc/fdprm
軟盤參數表.說明不同的軟盤格式.用setfdprm 設置.
/etc/fstab
啓動時mount -a命令(在/etc/rc 或等效的啓動文件中)自動mount的文件系統列表.linux下,也包括用swapon -a啓用的swap區的信息.
/etc/group
類似/etc/passwd ,但說明的不是用戶而是組.
/etc/inittab
init 的配置文件.
/etc/issue
getty在登錄提示符前的輸出信息.通常包括系統的一段短說明或歡迎信息.內容由系統管理員確定.
/etc/magic
file 的配置文件.包含不同文件格式的說明,file 基於它猜測文件類型.
/etc/motd
Message Of TheDay,成功登錄後自動輸出.內容由系統管理員確定.經常用於通告信息,如計劃關機時間的警告.
/etc/mtab
當前安裝的文件系統列表.由scripts初始化,並由mount 命令自動更新.需要一個當前安裝的文件系統的列表時使用,例如df命令.
/etc/shadow
在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow中,而後者只對root可讀.這使破譯口令更困難.
/etc/login.defs
login 命令的配置文件.
/etc/printcap
類似/etc/termcap ,但針對打印機.語法不同.
/etc/profile , /etc/csh.login ,/etc/csh.cshrc
登錄或啓動時Bourne或Cshells執行的文件.這允許系統管理員爲所有用戶建立全局缺省環境.
/etc/securetty
確認安全終端,即哪個終端允許root登錄.一般只列出虛擬控制檯,這樣就不可能(至少很困難)通過modem或網絡闖入系統並得到超級用戶特權.
/home目錄:
用戶的主目錄,這是系統預設的使用者家目錄(home directory)。 在你新增一個一般使用者帳號時,預設的使用者家目錄都會規範到這裏來。比較重要的是,家目錄有兩種代號:
~ :代表當前使用者的家目錄,而 ~guest:則代表用戶名爲guest的家目錄。
/lib目錄:
系統的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫,以及在/bin或/sbin底下的指令會呼叫的函式庫而已 。 什麼是函式庫呢?妳可以將他想成是外掛,某些指令必須要有這些外掛才能夠順利完成程式的執行之意。 尤其重要的是/lib/modules/這個目錄,因爲該目錄會放置核心相關的模組(驅動程式)。
[linuxprobe@linuxprobe Desktop]$ ls /lib
alsa firmware java-ext modprobe.d sse2
binfmt.d games jvm modules sysctl.d
bonobo gcc jvm-commmon modules-load.d systemd
cpp grub jvm-exports mozilla tmpfiles.d
crda java jvm-private polkit-1 tuned
cups java-1.5.0 kbd python2.7 udev
debug java-1.6.0 kdump rpm udisks2
dracut java-1.7.0 kernel sendmail yum-plugins
firewalld java-1.8.0 locale sendmail.postfix
[linuxprobe@linuxprobe Desktop]$
/media目錄:
media是媒體的英文,顧名思義,這個/media底下放置的就是可移除的裝置。 包括軟碟、光碟、DVD等等裝置都暫時掛載於此。 常見的檔名有:/media/floppy, /media/cdrom等等。
[linuxprobe@linuxprobe Desktop]$ ls /media
cdrom
[linuxprobe@linuxprobe Desktop]$ ls /media/cdrom
addons images Packages RPM-GPG-KEY-redhat-release
EFI isolinux release-notes TRANS.TBL
EULA LiveOS repodata
GPL media.repo RPM-GPG-KEY-redhat-beta
[linuxprobe@linuxprobe Desktop]$
/mnt目錄:
如果你想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。在古早時候,這個目錄的用途與/media相同啦。 只是有了/media之後,這個目錄就用來暫時掛載用了。
/opt目錄:
這個是給第三方協力軟體放置的目錄 。 什麼是第三方協力軟體啊?舉例來說,KDE這個桌面管理系統是一個獨立的計畫,不過他可以安裝到Linux系統中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裏來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下。
[linuxprobe@linuxprobe Desktop]$ ls /opt
centos rh
[linuxprobe@linuxprobe Desktop]$
/proc目錄:
這個目錄本身是一個虛擬文件系統(virtual filesystem)喔。 他放置的資料都是在內存當中,例如系統核心、行程資訊(process)(是進程嗎?)、周邊裝置的狀態及網絡狀態等等。因爲這個目錄下的資料都是在記憶體(內存)當中,所以本身不佔任何硬盤空間。比較重要的檔案(目錄)例如: /proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/*等等。
[linuxprobe@linuxprobe Desktop]$ ls /proc
1 118 155 197 239 274 3093 55 618 78 diskstats
10 119 156 198 24 275 3096 56 619 79 dma
100 12 157 199 240 2754 31 562 62 8 driver
101 120 158 2 241 2764 3101 563 620 80 execdomains
1013 1208 159 20 242 278 314 564 621 81 fb
1014 121 16 200 243 279 3142 566 622 82 filesystems
1019 122 160 2008 244 28 32 567 623 83 fs
102 123 161 201 245 280 33 569 624 84 interrupts
...
[linuxprobe@linuxprobe Desktop]$
/root目錄:(普通用戶無權限進入)
系統管理員(root)的家目錄。 之所以放在這裏,是因爲如果進入單人維護模式而僅掛載根目錄時,該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分區中。
[linuxprobe@linuxprobe Desktop]$ ls /root
ls: cannot open directory /root: Permission denied
[linuxprobe@linuxprobe Desktop]$ sudo su
[sudo] password for linuxprobe:
[root@linuxprobe Desktop]# ls /root
anaconda-ks.cfg Downloads nginx-1.8.1 Public
Desktop initial-setup-ks.cfg nginx-1.8.1.tar.gz Templates
Documents Music Pictures Videos
[root@linuxprobe Desktop]#
/run目錄:
是一個臨時文件系統,存儲系統啓動以來的信息。當系統重啓時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。
[root@linuxprobe Desktop]# ls /run
abrt dmeventd-server lock ppp spice-vdagentd
alsactl.pid dovecot log radvd sshd.pid
atd.pid faillock lsm rhsm syslogd.pid
auditd.pid gdm lvm rpcbind.lock systemd
avahi-daemon httpd lvmetad.pid rpcbind.sock tmpfiles.d
...
[root@linuxprobe Desktop]#
/sbin目錄:
Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來設定系統,其他使用者最多隻能用來查詢而已。放在/sbin底下的爲開機過程中所需要的,裏面包括了開機、修復、還原系統所需要的指令。至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔(system binary),則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。(裏面的文件數太多了就不展示了)
/srv目錄:
srv可以視爲service的縮寫,是一些網路服務啓動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。 舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裏面。呵呵,看來平時我們編寫的代碼應該放到這裏了。
/sys目錄:
這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄與核心相關的資訊。 包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。 這個目錄同樣不佔硬盤容量。
[root@linuxprobe Desktop]# ls /sys
block class devices fs kernel power
bus dev firmware hypervisor module
[root@linuxprobe Desktop]#
/tmp目錄:
用於存放各種臨時文件,是公用的臨時文件存儲點
[root@linuxprobe Desktop]# ls /tmp
ssh-7LTG04R9SIaZ systemd-private-EsaF3D systemd-private-P0mpwv
ssh-lS0kig3iO9UD systemd-private-f3jeAB systemd-private-p9kC25
ssh-r3sEpXMiwnGZ systemd-private-fqGL4a systemd-private-Pdp0DR
systemd-private-0ftXos systemd-private-FSRkYO systemd-private-PGmaEB
systemd-private-0qQWO2 systemd-private-ft6WLL systemd-private-PSImbU
...
[root@linuxprobe Desktop]#
/usr目錄:
用於存放系統應用程序,比較重要的目錄/usr/local 本地系統管理員軟件安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄
[root@linuxprobe Desktop]# ls /usr
bin etc games include lib lib64 libexec local sbin share src tmp
[root@linuxprobe Desktop]#
/var目錄:
這個目錄中存放着在不斷擴充着的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。
[root@linuxprobe Desktop]# ls /var
account crash ftp gopher local mail opt spool www
adm db games kerberos lock named preserve tmp yp
cache empty gdm lib log nis run var
[root@linuxprobe Desktop]#
這些Linux目錄的解釋是我在查閱了大量的資料,觀看教學視頻時記錄下來的,以及根據自己的一些經驗總結出來的,正是因爲水平有限,所以想把這些目錄整理一下,方便自己更好的查閱,當然我總結的也不是很深入,還有很多要學習的。