Linux深入探索12-文件系統(tǒng)
Linux深入探索12-文件體系
本文目錄結(jié)構(gòu)預(yù)覽:
-
一、簡介
1、簡略意義上的界說
2、Unix 中的界說 -
二、文件體系
1、主目錄:根目錄
2、掛載文件體系
3、檢查文件體系
4、常見的文件體系
5、掛載點:/mnt 與 /media -
三、文件類型
1、一般文件
2、目錄
3、偽文件 -
四、根目錄介紹
1、常見根目錄的目錄結(jié)構(gòu)
2、尖端目錄介紹
3、程序相關(guān)目錄:bin、lib、sbin -
五、特別文件
1、檢查特別文件
2、硬件
3、終端 - 六、proc 文件
- 七、參閱
一、簡介
Unix 文件體系,即操作體系中經(jīng)過存儲及安排體系中的全部數(shù)據(jù)而為用戶和程序供給服務(wù)的那一部分。
1、簡略意義上的界說
從簡略意義上講,文件便是一個有稱號的數(shù)據(jù)調(diào)集。大多數(shù)時分,文件儲存在數(shù)字介質(zhì)上:硬盤、CD、DVD、軟盤、閃存存儲卡等。
2、Unix 中的界說
在 Unix 中,文件的界說更為廣泛。文件是任何源,有一個稱號,能夠能夠從中讀取數(shù)據(jù);或許是任何方針,有一個稱號,能夠向其間寫入數(shù)據(jù)。例如,鍵盤(一種輸入源)、顯現(xiàn)器(一種輸出方針)都能夠作為文件被拜訪。另外還有不存在所謂的物理實體的文件,它們也接收輸入或許產(chǎn)生輸出,從而供給詳細(xì)的服務(wù)。
以這種方法界說文件擁有重大意義:它意味著 Unix 程序能夠運用簡略的過程從任意的輸入源讀取數(shù)據(jù),或許向任意的輸出方針寫入數(shù)據(jù)。
二、文件體系
文件體系的任務(wù)便是存儲和安排數(shù)據(jù),并向用戶和程序供給數(shù)據(jù)的拜訪功用。
Unix 和 Linux 體系中包含許多的文件,典型的 Unix 包含大約 10000 至 20000 個文件,許多的文件安排成了一顆十分大的樹。
雖然文件數(shù)量和文件類型許多,但大部分 Linux 體系采用的都是樹形結(jié)構(gòu)文件體系,而且也都大部分采用了一個 Linux 目錄結(jié)構(gòu)規(guī)范——文件體系結(jié)構(gòu)規(guī)范(Filesystem Hierarchy Standard, FHS)。
1、主目錄:根目錄
在樹形結(jié)構(gòu)中,咱們稱樹的主節(jié)點為根。因而,咱們將 Linux 文件體系中的主目錄稱為根目錄,用“/”來表明。
以超級用戶的身份運轉(zhuǎn)以下指令,能夠估計體系中文件和目錄的總數(shù)量,如下:
[nosee@instance-4 ~]$ sudo ls -R / | wc -l 158732
而根據(jù) GUI 的體系,文件數(shù)量則更多:
nosee@nosee-virtual-machine:~/Desktop$ sudo ls -R / | wc -l 855069
注:在文件名的最初,“/”代表根目錄。在文件名的中心,“/”充任定界符。
2、掛載文件體系
在大多數(shù)情況下,并不是一切的文件都存儲在同一個物理設(shè)備上。更精確地說,文件存儲在不同類型的設(shè)備上,包含多個磁盤分區(qū)(每個磁盤分區(qū)被當(dāng)作一個獨自的設(shè)備)。
每個存儲設(shè)備都有自己的本地文件體系,其目錄和子目錄近按照規(guī)范 Unix 方法安排成樹??墒?,在拜訪本地文件體系時,它的樹有必要附加到主樹上,這能夠經(jīng)過將小型文件體系的根目錄連接到主文件體系中的特定目錄上來實現(xiàn)。經(jīng)過這種方法來連接小型文件體系時,咱們稱為掛載(mount)該文件體系,小型文件體系在主樹中附加到的目錄則稱為掛載點(mount point)。最終,當(dāng)斷開文件體系時,稱之為卸載(umount)文件體系。
作為發(fā)動過程的一部分,Unix 每次發(fā)動時,都會主動掛載一些本地文件體系。因而,當(dāng)體系發(fā)動結(jié)束以后,主文件體系現(xiàn)已添加了幾個其它文件體系。
當(dāng)咱們需要手動掛載一個設(shè)備時,運用的是mount程序(mount a filesystem),手動卸載則需要運用umount程序(unmount file systems)。
例:掛載設(shè)備/dev/fd0中的軟盤驅(qū)動器文件體系,并將其附加在主樹中的/media/floppy方位上。
mount /dev/fdo /media/floppy
掛載成功后,用戶就能夠經(jīng)過/media/floppy目錄拜訪軟盤上的文件。
3、檢查文件體系
如你所知,Linux 支持十分多的文件體系,例如 ext4、ext3、ext2、sysfs、securityfs、FAT16、FAT32、NTFS 等等,當(dāng)時被運用最多的文件體系是 ext4(Fourth extended filesystem,第四代擴展文件體系)。
1)mount
mount 被用來在類 Unix 體系中掛載本地或長途的文件體系。
運用指令mount自身能夠顯現(xiàn)當(dāng)時掛載到體系上的一切文件體系列表,如下。
[nosee@instance-4 ~]$ mount | head sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=2011124k,nr_inodes=502781,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=404084k,mode=755) /dev/sda1 on / type ext4 (rw,relatime,discard,errors=remount-ro) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
2)df - report file system disk space usage
運用指令df -T能夠檢查現(xiàn)已掛載的分區(qū)和文件體系類型,如下。
[nosee@instance-4 ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 395M 40M 355M 11% /run /dev/sda1 ext4 9.7G 2.2G 7.0G 25% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda15 vfat 124M 5.7M 119M 5% /boot/efi tmpfs tmpfs 395M 0 395M 0% /run/user/1001
注:
df 指令被用來報告文件體系的磁盤空間運用情況。
運用-h(human-readable)選項,將顯現(xiàn)人類易讀的大小單位。
3)findmnt - find a filesystem
不帶參數(shù)的 findmnt 指令能夠列出一切已掛載的文件體系,如下。(和不帶參數(shù)的mount輸出結(jié)果類似,但更直觀)
[nosee@instance-4 ~]$ findmnt TARGET SOURCE FSTYPE OPTIONS / /dev/sda1 ext4 rw,relatime,discard,errors=remount-ro ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755 │ │ ├─/sys/fs/cgroup/unified cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate │ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd │ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,blkio │ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime,pids │ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio │ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpuset │ │ ├─/sys/fs/cgroup/rdma cgroup cgroup rw,nosuid,nodev,noexec,relatime,rdma │ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct │ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,memory │ │ ├─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,perf_event │ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,devices │ │ └─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,freezer │ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime │ ├─/sys/firmware/efi/efivars efivarfs efivarfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/bpf bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 │ └─/sys/kernel/debug debugfs debugfs rw,relatime │ └─/sys/kernel/debug/tracing tracefs tracefs rw,relatime ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto... │ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_misc rw,relatime ├─/dev udev devtmpfs rw,nosuid,relatime,size=2011124k,nr_inodes=502781,mode=755 │ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 │ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev │ ├─/dev/mqueue mqueue mqueue rw,relatime │ └─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,pagesize=2M ├─/run tmpfs tmpfs rw,nosuid,noexec,relatime,size=404084k,mode=755 │ ├─/run/lock tmpfs tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k │ └─/run/user/1001 tmpfs tmpfs rw,nosuid,nodev,relatime,size=404080k,mode=700,uid=1001... └─/boot/efi /dev/sda15 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharse...
findmnt 程序展示出了方針掛載點(TARGET)、源設(shè)備(SOURCE)、文件體系類型(FSTYPE)以及相關(guān)的掛載選項(OPTIONS)。
從上面的3個比如中,都能夠看出該案例體系的主文件體系是 ext4。而其它文件體系,都是掛載到主文件體系的某個特定目錄下的。
4、常見的文件體系
文件體系 | 說明 |
根據(jù)磁盤的文件體系 | —— |
ext3 | 第3代擴展文件體系(Linux) |
ext4 | 第4代擴展文件體系(Linux) |
FAT32 | 32位文件分配表文件體系(Microsoft Windows) |
HFS+ | 層次式文件體系(Macintosh) |
ISO 9660 | ISO 9660 規(guī)范文件體系(CD-ROM) |
NTFS | NT 文件體系(Microsoft Windows) |
UDF | 通用磁盤格式文件體系(可重寫CD和DVD) |
UFS2 | Unix 文件體系(BSD、Solaris) |
網(wǎng)絡(luò)文件體系 | —— |
NFS | 網(wǎng)絡(luò)文件體系(廣泛運用) |
SMB | 服務(wù)器信息塊(Windows網(wǎng)絡(luò)) |
特別用處文件體系 | —— |
devpts | 偽終端的設(shè)備界面(PTY) |
procfs | proc 文件體系 |
sysfs | 體系數(shù)據(jù)文件體系(設(shè)備與驅(qū)動器) |
tmpfs | 暫時存儲文件體系 |
根據(jù)磁盤的文件體系在硬盤、CD、DVD或其它設(shè)備上存儲數(shù)據(jù);網(wǎng)絡(luò)文件體系支持經(jīng)過網(wǎng)絡(luò)同享資源;特別用處文件體系供給對體系資源的拜訪(如偽文件)。
5、掛載點:/mnt 與 /media
廣義地講,存儲設(shè)備有兩種類型。固定介質(zhì)永久附屬于核算機中,例如硬盤、驅(qū)動器。可移動介質(zhì)在體系運轉(zhuǎn)時能夠改動,例如 CD、DVD、軟盤、閃存等。
該區(qū)別十分重要,因為文件體系存在消失的可能性,Unix 體系有必要保證恰當(dāng)?shù)剞k理該文件體系。例如,在答應(yīng)彈出CD之前,Unix 有必要保證一切的輸出操作都現(xiàn)已完成。
根據(jù)這一原因,文件體系層次結(jié)構(gòu)需求運用特定的目錄掛載文件體系。關(guān)于沒有掛載在其它方位的固定介質(zhì)(如額定的硬盤)來說,指定目錄是 /mnt;關(guān)于可移動介質(zhì)來說,目錄是 /media。
三、文件類型
Unix 文件有許多不同的類型,可是它們都能夠分成 3 類:一般文件、目錄和偽文件。
1、一般文件
一般文件(ordinary)或慣例文件(regular)是大多數(shù)人在運用的單詞“文件”時所指的文件。一般文件包含數(shù)據(jù),坐落某種類型的存儲設(shè)備上。
廣義的講,一般文件有兩種類型:文件文件和二進制文件。
文本文件用于存儲文本數(shù)據(jù):純文本、shell 腳本、源程序、配置文件等。
二進制文件包含非文本數(shù)據(jù),常見的二進制文件:執(zhí)行程序、目標(biāo)文件、圖畫、音樂文件、視頻文件、字處理文檔、電子表格、數(shù)據(jù)庫等。
2、目錄
和一般程序類似,目錄文件也駐留在某種類型的存儲設(shè)備上??墒悄夸洸患拇鎽T例數(shù)據(jù),而是用來安排、拜訪其它文件。從概念上講,目錄“包含”其它文件。
咱們運用目錄將文件安排成一個類似于樹的層次體系。詳細(xì)安排時,將文件組合成組,再將每組文件存儲在各自的目錄中。因為目錄自身便是文件,所以目錄還能夠包含其它目錄,從而形成層次結(jié)構(gòu)。
實踐上,目錄并不寄存實踐文件,它只是包含文件 Unix 定位文件所需的信息。
3、偽文件
與一般文件和目錄不同,偽文件并不用來存儲數(shù)據(jù),所以這些文件自身不占用任何空間。
偽文件的意圖是供給一種服務(wù),這種服采納和慣例文件相同的拜訪方法進行拜訪。在大多數(shù)情況下,偽文件用來拜訪內(nèi)核供給服務(wù)的。
最重要的偽文件類型是特別文件,有時也稱為設(shè)備文件。特別文件是物理設(shè)備的內(nèi)部表明,例如鍵盤、顯現(xiàn)器、打印機、磁盤驅(qū)動器都能夠當(dāng)作特別文件來拜訪。(實踐上,包含核算機或許網(wǎng)絡(luò)中的每個設(shè)備)
命名管道是管道功用的一個擴展,它能夠?qū)⒁粋€程序的輸出連接到另一個程序的輸入上。
proc 文件答應(yīng)拜訪內(nèi)核中的信息。少量幾種特定情況下,甚至還能夠運用 proc 文件修改內(nèi)核中的數(shù)據(jù)。
四、根目錄介紹
理解核算機文件體系最方便的方法便是檢查根目錄,并檢查一切子目錄。
1、常見根目錄的目錄結(jié)構(gòu)
目錄 | 內(nèi)容 |
/ | 根目錄 |
/bin | 根本程序 |
/boot | 發(fā)動體系時所需的文件 |
/dev | 設(shè)備文件 (后邊會詳細(xì)介紹) |
/etc | 配置文件 |
/home | 用戶的 home 目錄 |
/lib | 根本同享庫,內(nèi)核模塊 |
/lost+found | 由 fsck 恢復(fù)的受損文件 |
/media | 可移動介質(zhì)的掛載點(如USB驅(qū)動器、CD-ROMs等) |
/mnt | 不能掛載在其他方位上的固定介質(zhì)的掛載點(如額定的硬盤) |
/opt | 用來安裝“可選的”第三方應(yīng)用軟件(主要是商業(yè)軟件產(chǎn)品) |
/proc | proc文件 (后邊會詳細(xì)介紹) |
/root | 超級用戶的 home 目錄 |
/sbin | 由超級用戶運轉(zhuǎn)的根本體系辦理程序 |
/srv | 本地體系所供給服務(wù)的數(shù)據(jù) |
/tmp | 暫時文件 |
/usr | 靜態(tài)數(shù)據(jù)運用的輔佐文件體系 |
/var | 可變數(shù)據(jù)運用的輔佐文件體系 |
一般咱們把根目錄下的一切子目錄稱為尖端目錄。運用ls -l /檢查尖端目錄,如下:
[nosee@instance-4 ~]$ ls -l / total 60 lrwxrwxrwx 1 root root 7 Dec 9 20:59 bin -> usr/bin drwxr-xr-x 4 root root 4096 Dec 9 21:03 boot drwxr-xr-x 14 root root 2900 Jan 14 00:06 dev drwxr-xr-x 75 root root 4096 Jan 19 16:18 etc drwxr-xr-x 5 root root 4096 Jan 5 02:40 home lrwxrwxrwx 1 root root 7 Dec 9 20:59 lib -> usr/lib lrwxrwxrwx 1 root root 9 Dec 9 20:59 lib32 -> usr/lib32 lrwxrwxrwx 1 root root 9 Dec 9 20:59 lib64 -> usr/lib64 lrwxrwxrwx 1 root root 10 Dec 9 20:59 libx32 -> usr/libx32 drwx------ 2 root root 16384 Dec 9 20:59 lost+found drwxr-xr-x 2 root root 4096 Dec 9 20:59 media drwxr-xr-x 2 root root 4096 Dec 9 20:59 mnt drwxr-xr-x 2 root root 4096 Dec 9 20:59 opt dr-xr-xr-x 130 root root 0 Jan 14 00:05 proc drwx------ 9 root root 4096 Jan 14 04:05 root drwxr-xr-x 20 root root 640 Jan 19 12:47 run lrwxrwxrwx 1 root root 8 Dec 9 20:59 sbin -> usr/sbin drwxr-xr-x 2 root root 4096 Dec 9 20:59 srv dr-xr-xr-x 13 root root 0 Jan 14 04:59 sys drwxrwxrwt 9 root root 4096 Jan 19 16:09 tmp drwxr-xr-x 13 root root 4096 Dec 9 20:59 usr drwxr-xr-x 12 root root 4096 Jan 2 01:00 var
2、尖端目錄介紹
1)/bin
這個目錄寄存最重要的體系,即體系辦理員在單用戶形式下辦理體系所需的根本東西。這些東西都是可執(zhí)行文件,因而該目錄命名為 bin (binary 二進制),即寄存二進制文件的方位。該目錄的一些程序也能夠由慣例用戶運用。
檢查/bin目錄下的前十個程序,如:
[nosee@instance-4 ~]$ ls /bin | head [ aa-enabled aa-exec ab addpart anthoscli apropos apt apt-cache apt-cdrom
2)/boot
這是體系寄存引導(dǎo)過程中所需全部文件的方位。內(nèi)核有必要坐落這個目錄或許根目錄中。
如下能夠看出,文件initrd.img-4.19.0-18-cloud-amd64便是該體系的內(nèi)核文件。假如升級過體系,則會在該目錄中發(fā)現(xiàn)不止一個版別的內(nèi)核。
[nosee@instance-4 ~]$ ls -l /boot/ total 21236 -rw-r--r-- 1 root root 2925615 Sep 29 18:53 System.map-4.19.0-18-cloud-amd64 -rw-r--r-- 1 root root 91019 Sep 29 18:53 config-4.19.0-18-cloud-amd64 drwxr-xr-x 3 root root 16384 Jan 1 1970 efi drwxr-xr-x 6 root root 4096 Dec 9 21:03 grub -rw-r--r-- 1 root root 14037410 Dec 9 21:03 initrd.img-4.19.0-18-cloud-amd64 -rw-r--r-- 1 root root 4659968 Sep 29 18:53 vmlinuz-4.19.0-18-cloud-amd64
3)/dev
一切特別文件都坐落這個目錄中,包含物理設(shè)備和偽設(shè)備。(后邊還會詳細(xì)介紹)
4)/etc
這個目錄包含的是配置文件。配置文件是某程序發(fā)動時處理的文本文件,其間包含有影響程序操作的指令或信息。
5)/home
當(dāng)創(chuàng)立用戶時,辦理員會為用戶標(biāo)識賦予一個 home 目錄,命名如:/home/用戶標(biāo)識
6)/lib
當(dāng)程序運轉(zhuǎn)時,常常要調(diào)用庫,即現(xiàn)已存在的數(shù)據(jù)和代碼模塊。Unix 供給許多的庫,以答應(yīng)程序拜訪操作體系供給的服務(wù)。這個目錄包含運轉(zhuǎn)/bin和/sbin目錄中的程序所需的根本庫和內(nèi)核模塊。
7)/lost+found
假如 Unix 沒有正常地關(guān)機,那么那些僅完成部分寫入的文件將受到損壞。Unix 下次發(fā)動時,一個叫 fsck(filesystem check 文件體系檢查)的程序?qū)⒅鲃舆\轉(zhuǎn),檢查文件體系并修正問題。/lost+found 目錄就用于保存由 fsck 恢復(fù)的受損文件。
8)/sbin
稱號 /sbin 代表“system binaries 體系二進制文件”,這個目錄中寄存用于體系辦理的程序,一般這個目錄中的程序有必要由超級用戶運轉(zhuǎn)。
9)/srv
儲存為本地體系所供給服務(wù)的數(shù)據(jù)(service,因而命名為/srv)。在這里存儲數(shù)據(jù)的典型服務(wù)包含 cgi、Web、ftp、cvs、rsync等。
10)/tmp
這個目錄用于暫時存儲。任何人都能夠在這個目錄存儲文件,可是最終 /tmp 的內(nèi)容將主動移除。
11)/usr
這個目錄是輔佐文件體系的根,包含有輔佐文件體系的重要子目錄。(集成到主文件體系中來的獨自文件體系的掛載點)
/usr 的意圖是用來寄存靜態(tài)數(shù)據(jù),即沒有辦理員干與不會改動的數(shù)據(jù)。根據(jù)其特性,靜態(tài)數(shù)據(jù)不會隨時刻改動。這就答應(yīng) /usr 駐留于自己的設(shè)備,該設(shè)備甚至有可能是諸如 CD-ROM 之類的只讀設(shè)備。(后邊還會詳細(xì)介紹)
12)/var
這個目錄的稱號意味著“variable 可變”。像 /usr 一樣,這個目錄是輔佐文件體系的根,包含有輔佐文件體系的重要子目錄。區(qū)別是,/var 寄存的是可變數(shù)據(jù),如web網(wǎng)站文件、日志文件、打印文件、電子郵件消息等。像 /usr 一樣,/var 文件體系一般駐留于自己的設(shè)備。
這其間比較重要的一個目錄便是/var/log,里面包含各種體系活動的記載,還有各種程序的日志文件。
3、程序相關(guān)目錄:bin、lib、sbin
目錄 | 內(nèi)容 |
通用程序 | —— |
/bin | 根本程序 |
/usr/bin | 非根本程序 |
/usr/local/bin | 本地安裝程序 |
體系辦理程序 | —— |
/sbin | 由超級用戶運轉(zhuǎn)的根本體系辦理程序 |
/usr/sbin | 由超級用戶運轉(zhuǎn)的非根本體系辦理程序 |
/usr/local/sbin | 本地安裝的體系程序 |
第三方應(yīng)用程序 | —— |
/opt/xxx | 應(yīng)用程序xxx的靜態(tài)數(shù)據(jù),包含程序 |
/var/opt/xxx | 應(yīng)用程序xxx的可變數(shù)據(jù) |
檢查/usr目錄,如下:
[nosee@instance-4 ~]$ ls -l /usr/ total 68 drwxr-xr-x 2 root root 20480 Jan 14 03:19 bin drwxr-xr-x 2 root root 4096 Oct 3 09:00 games drwxr-xr-x 3 root root 4096 Jan 1 08:23 include drwxr-xr-x 55 root root 4096 Jan 5 02:31 lib drwxr-xr-x 2 root root 4096 Dec 9 20:59 lib32 drwxr-xr-x 2 root root 4096 Dec 9 20:59 lib64 drwxr-xr-x 2 root root 4096 Dec 9 20:59 libx32 drwxr-xr-x 10 root root 4096 Dec 9 20:59 local drwxr-xr-x 2 root root 12288 Jan 6 06:07 sbin drwxr-xr-x 87 root root 4096 Jan 5 02:31 share drwxr-xr-x 2 root root 4096 Oct 3 09:00 src
能夠看到/usr目錄下的子目錄有幾個是與根目錄/下的尖端目錄名字相同。(如/usr/bin與/bin、/usr/lib與/lib等)
按照曾經(jīng)的規(guī)則/bin是寄存根本程序的目錄,/usr/bin是寄存非根本程序(大多數(shù)用戶程序)的目錄。/lib寄存根本同享庫,而/usr/lib寄存非根本同享庫。/sbin寄存由超級用戶運轉(zhuǎn)的根本體系辦理程序,/usr/sbin
寄存由超級用戶運轉(zhuǎn)的非根本體系辦理程序。
其實把以上這些程序分別寄存在兩個類似的目錄中,是由歷史原因造成的?,F(xiàn)在,存儲設(shè)備現(xiàn)已十分快速,而且容量也更大了。所以現(xiàn)在許多 Unix 體系現(xiàn)已把這些同類的程序都存到了同一個目錄中,可是曾經(jīng)的目錄結(jié)構(gòu)還是保留下來。如下可知:
[nosee@instance-4 ~]$ ls -la /bin /lib /sbin lrwxrwxrwx 1 root root 7 Dec 9 20:59 /bin -> usr/bin lrwxrwxrwx 1 root root 7 Dec 9 20:59 /lib -> usr/lib lrwxrwxrwx 1 root root 8 Dec 9 20:59 /sbin -> usr/sbin
五、特別文件
特別文件是表明物理設(shè)備的偽文件,Unix 將一切的特別文件寄存在/dev(device 設(shè)備)目錄中。
1、檢查特別文件
運用指令ls /dev/能夠顯現(xiàn)體系上特別文件的稱號。
[nosee@instance-4 ~]$ ls /dev/ autofs mqueue tty0 tty30 tty52 vcs3 block net tty1 tty31 tty53 vcs4 bsg network_latency tty10 tty32 tty54 vcs5 btrfs-control network_throughput tty11 tty33 tty55 vcs6 char null tty12 tty34 tty56 vcsa console psaux tty13 tty35 tty57 vcsa1 core ptmx tty14 tty36 tty58 vcsa2 cpu_dma_latency pts tty15 tty37 tty59 vcsa3 cuse random tty16 tty38 tty6 vcsa4 disk rtc tty17 tty39 tty60 vcsa5 fd rtc0 tty18 tty4 tty61 vcsa6 full sda tty19 tty40 tty62 vcsu fuse sda1 tty2 tty41 tty63 vcsu1 hpet sda14 tty20 tty42 tty7 vcsu2 hugepages sda15 tty21 tty43 tty8 vcsu3 hwrng sg0 tty22 tty44 tty9 vcsu4 initctl shm tty23 tty45 ttyS0 vcsu5 input snapshot tty24 tty46 ttyS1 vcsu6 kmsg stderr tty25 tty47 ttyS2 vfio log stdin tty26 tty48 ttyS3 vga_arbiter loop-control stdout tty27 tty49 urandom vhost-net mapper tpm0 tty28 tty5 vcs vhost-vsock mem tpmrm0 tty29 tty50 vcs1 zero memory_bandwidth tty tty3 tty51 vcs2
其間,大多數(shù)稱號是平時極少量需要運用到的。因為大部分特別文件是由體系程序運用的。
下表可將常見的特別文件分為3組:硬件、終端和偽設(shè)備。
特別文件 | 說明 |
-----硬件----- | 一切連接到核算機上的設(shè)備 |
/dev/fd0 | 軟盤 |
/dev/hda | 硬盤 |
/dev/hda1 | 硬盤:第1分區(qū) |
/dev/sda | SCSI 硬盤 |
/dev/sda1 | SCSI 硬盤:第1分區(qū) |
/dev/sda1 | USB 閃存卡(被視為可移除的SCSI 硬盤) |
/dev/lp0 | 打印機 |
/dev/usb/lp0 | USB 打印機 |
-----終端----- | 能夠把終端分為實踐終端(獨立的物理設(shè)備)和偽終端(終端仿真程序) |
/dev/tty | 當(dāng)時終端 |
/dev/tty1 | 控制臺/虛擬控制臺 |
/dev/pts/0 | 偽終端 |
/dev/ttyp0 | 偽終端 |
----偽設(shè)備---- | 一個充任輸入源或輸出方針的文件,但并不對應(yīng)實踐設(shè)備(實在的或仿真的)。 |
/dev/null | 放棄輸出,輸入不回來內(nèi)容(eof) |
/dev/zero | 放棄輸出,輸入回來 null(0) |
/dev/random | 隨機數(shù)生成器 |
/dev/urandom | 隨機數(shù)生成器 |
2、硬件
一切連接到核算機上的設(shè)備都經(jīng)過特別文件拜訪。
如/dev/fd0表明榜首個軟盤驅(qū)動器,/dev/lp0表明榜首臺打印機。(后邊的數(shù)字指的是一個詳細(xì)的設(shè)備,核算機程序一般從0開端計數(shù))
硬盤的處理有點不同。如,榜首塊 IDE 硬盤稱為/dev/hda,第二塊稱為/dev/hdb,等等。
硬盤還被劃分為一個或多個分區(qū),分區(qū)能夠作為獨自的設(shè)備。榜首塊硬盤的榜首個分區(qū)稱為/dev/hda1,假如有第二個分區(qū)則為/dev/hda2。
3、終端
咱們能夠把終端分為實踐終端(獨立的物理設(shè)備)和偽終端(終端仿真程序)。
運用指令tty能夠檢查當(dāng)時運用的終端稱號。(tty - print the file name of the terminal connected to standard input)
1)實踐終端
充任硬件設(shè)備的終端運用的是/dev/tty命名約定,如/dev/tty1。在桌面環(huán)境運用虛擬控制臺時,它也充任一個實踐終端。默許情況下,Linux 支持6個這樣的控制臺,分別由特別文件/dev/tty1至/dev/tty6表明。
如:
[nosee ~]$ tty /dev/tty3
2)偽終端
當(dāng)在窗口運用GUI運轉(zhuǎn)終端仿真程序時,因為沒有實踐終端,所以 Unix 創(chuàng)立所謂的偽終端(pseudo terminal,pty)來模仿終端。因為有兩種不同的體系來創(chuàng)立偽終端,因而能夠看到兩種類型的稱號。
一種是/dev/ttyp0、/dev/ttyp1...這類稱號;另外一種則是/dev/pts0、/dev/pts1...
如:
[nosee@instance-4 ~]$ tty /dev/pts/2
3)其它
為了方便起見,特別文件/dev/tty表明當(dāng)時正在運用的終端。例如,你在運用虛擬控制臺#3,那么/dev/tty與/dev/pts/3相同。
還能夠這樣玩:
六、proc 文件
proc 文件是那些供給一種簡略的途徑來檢查多種類型的體系信息的偽文件, proc 文件直接從內(nèi)核獲取信息,而不是運用雜亂的程序搜出數(shù)據(jù)。(原始的 proc 文件體系是為了提取進程的信息而開發(fā)的)
一切的 proc 文件都寄存在/proc目錄中。在這個目錄中,能夠發(fā)現(xiàn)體系中每個進程對應(yīng)一個子目錄。子目錄的稱號十分簡略,便是各種進程的進程ID。ps(process status 進程狀況)程序也是經(jīng)過讀取適宜的 proc 文件來收集所需數(shù)據(jù)的。
檢查/proc目錄如下
[nosee@instance-4 ~]$ ls -F /proc 1/ 197/ 25182/ 383/ 517/ devices kpageflags swaps 10/ 198/ 26/ 384/ 518/ diskstats loadavg sys/ 11/ 2/ 27/ 395/ 577/ driver/ locks sysrq-trigger 12/ 20/ 28/ 4/ 579/ execdomains meminfo sysvipc/ 134/ 209/ 29/ 400/ 587/ filesystems misc thread-self@ 135/ 21/ 29053/ 401/ 6/ fs/ modules timer_list 1363/ 22/ 2989/ 403/ 61/ interrupts mounts@ tty/ 1364/ 23/ 3/ 406/ 8/ iomem mtrr uptime 1365/ 230/ 30/ 413/ 9/ ioports net@ version 14/ 23077/ 31/ 426/ acpi/ irq/ pagetypeinfo vmallocinfo 15/ 23078/ 31414/ 430/ buddyinfo kallsyms partitions vmstat 16/ 24/ 32/ 454/ bus/ kcore sched_debug zoneinfo 166/ 243/ 320/ 458/ cgroups key-users schedstat 167/ 25/ 321/ 459/ cmdline keys self@ 17/ 25102/ 32617/ 49/ consoles kmsg slabinfo 19/ 25175/ 33/ 50/ cpuinfo kpagecgroup softirqs 195/ 25181/ 381/ 512/ crypto kpagecount stat
現(xiàn)代的 Linux 體系運用該目錄來寄存許多其它偽文件,供給許多內(nèi)核數(shù)據(jù)拜訪功用。如文件/proc/cpuinfo顯現(xiàn)了有關(guān)處理器的信息。
常見的 proc 文件:
proc | 相關(guān)信息 |
/proc/xxx/ | 進程#xxx |
/proc/cmdline | 內(nèi)核選項 |
/proc/cpuinfo | 處理器 |
/proc/decixes | 設(shè)備 |
/proc/diskstats | 邏輯磁盤設(shè)備 |
/proc/filesystems | 文件體系 |
/proc/meminfo | 內(nèi)存辦理 |
/proc/modules | 內(nèi)核模塊 |
/proc/mounts | 已掛載設(shè)備 |
/proc/partitions | 磁盤分區(qū) |
/proc/scsi | SCSI 和 RAID 設(shè)備 |
/proc/swaps | 交換分區(qū) |
/proc/uptime | 內(nèi)核運轉(zhuǎn)時刻(秒)和內(nèi)核運轉(zhuǎn)時刻(秒) |
/proc/version | 內(nèi)核版別、分發(fā)、gcc 編輯器(用來構(gòu)建內(nèi)核) |
一般,除非是體系辦理員,否則永久不需要檢查這些 proc 文件的。
例1:檢查我的 Debian 云主機的內(nèi)核版別信息
[nosee@instance-4 ~]$ cat /proc/version Linux version 4.19.0-18-cloud-amd64 (debian-kernel@lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.208-1 (2021-09-29)
例2:檢查我的虛擬 Ubuntu 主機的內(nèi)核版別信息
nosee@nosee-virtual-machine:~/Desktop$ cat /proc/version Linux version 5.11.0-43-generic (buildd@lcy02-amd64-036) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021
例3:檢查內(nèi)存辦理信息(榜首行的MemTotal:4040812 kB表明內(nèi)存總大小約為4G)
[nosee@instance-4 ~]$ head /proc/meminfo MemTotal: 4040812 kB MemFree: 2863036 kB MemAvailable: 3232504 kB Buffers: 123204 kB Cached: 450864 kB SwapCached: 0 kB Active: 758276 kB Inactive: 252388 kB Active(anon): 443428 kB Inactive(anon): 30948 kB
七、參閱
書箱:《Unix & Linux 大學(xué)教程》第二十三章 (美)Harley Hahn 著 張杰良 譯