Linux深入探索12-文件系统
Linux深入探索12-文件体系
本文目录结构预览:
-
一、简介
1、简略意义上的界说
2、Unix 中的界说 -
二、文件体系
1、主目录:根目录
2、挂载文件体系
3、检查文件体系
4、常见的文件体系
5、挂载点:/mnt 与 /media -
三、文件类型
1、一般文件
2、目录
3、伪文件 -
四、根目录介绍
1、常见根目录的目录结构
2、尖端目录介绍
3、程序相关目录:bin、lib、sbin -
五、特别文件
1、检查特别文件
2、硬件
3、终端 - 六、proc 文件
- 七、参阅
一、简介
Unix 文件体系,即操作体系中经过存储及安排体系中的全部数据而为用户和程序供给服务的那一部分。
1、简略意义上的界说
从简略意义上讲,文件便是一个有称号的数据调集。大多数时分,文件储存在数字介质上:硬盘、CD、DVD、软盘、闪存存储卡等。
2、Unix 中的界说
在 Unix 中,文件的界说更为广泛。文件是任何源,有一个称号,能够能够从中读取数据;或许是任何方针,有一个称号,能够向其间写入数据。例如,键盘(一种输入源)、显现器(一种输出方针)都能够作为文件被拜访。另外还有不存在所谓的物理实体的文件,它们也接收输入或许产生输出,从而供给详细的服务。
以这种方法界说文件拥有重大意义:它意味着 Unix 程序能够运用简略的过程从任意的输入源读取数据,或许向任意的输出方针写入数据。
二、文件体系
文件体系的任务便是存储和安排数据,并向用户和程序供给数据的拜访功用。
Unix 和 Linux 体系中包含许多的文件,典型的 Unix 包含大约 10000 至 20000 个文件,许多的文件安排成了一颗十分大的树。
虽然文件数量和文件类型许多,但大部分 Linux 体系采用的都是树形结构文件体系,而且也都大部分采用了一个 Linux 目录结构规范——文件体系结构规范(Filesystem Hierarchy Standard, FHS)。
1、主目录:根目录
在树形结构中,咱们称树的主节点为根。因而,咱们将 Linux 文件体系中的主目录称为根目录,用“/”来表明。
以超级用户的身份运转以下指令,能够估计体系中文件和目录的总数量,如下:
[nosee@instance-4 ~]$ sudo ls -R / | wc -l 158732
而根据 GUI 的体系,文件数量则更多:
nosee@nosee-virtual-machine:~/Desktop$ sudo ls -R / | wc -l 855069
注:在文件名的最初,“/”代表根目录。在文件名的中心,“/”充任定界符。
2、挂载文件体系
在大多数情况下,并不是一切的文件都存储在同一个物理设备上。更精确地说,文件存储在不同类型的设备上,包含多个磁盘分区(每个磁盘分区被当作一个独自的设备)。
每个存储设备都有自己的本地文件体系,其目录和子目录近按照规范 Unix 方法安排成树。可是,在拜访本地文件体系时,它的树有必要附加到主树上,这能够经过将小型文件体系的根目录连接到主文件体系中的特定目录上来实现。经过这种方法来连接小型文件体系时,咱们称为挂载(mount)该文件体系,小型文件体系在主树中附加到的目录则称为挂载点(mount point)。最终,当断开文件体系时,称之为卸载(umount)文件体系。
作为发动过程的一部分,Unix 每次发动时,都会主动挂载一些本地文件体系。因而,当体系发动结束以后,主文件体系现已添加了几个其它文件体系。
当咱们需要手动挂载一个设备时,运用的是mount程序(mount a filesystem),手动卸载则需要运用umount程序(unmount file systems)。
例:挂载设备/dev/fd0中的软盘驱动器文件体系,并将其附加在主树中的/media/floppy方位上。
mount /dev/fdo /media/floppy
挂载成功后,用户就能够经过/media/floppy目录拜访软盘上的文件。
3、检查文件体系
如你所知,Linux 支持十分多的文件体系,例如 ext4、ext3、ext2、sysfs、securityfs、FAT16、FAT32、NTFS 等等,当时被运用最多的文件体系是 ext4(Fourth extended filesystem,第四代扩展文件体系)。
1)mount
mount 被用来在类 Unix 体系中挂载本地或长途的文件体系。
运用指令mount自身能够显现当时挂载到体系上的一切文件体系列表,如下。
[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能够检查现已挂载的分区和文件体系类型,如下。
[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)选项,将显现人类易读的大小单位。
3)findmnt - find a filesystem
不带参数的 findmnt 指令能够列出一切已挂载的文件体系,如下。(和不带参数的mount输出结果类似,但更直观)
[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)、源设备(SOURCE)、文件体系类型(FSTYPE)以及相关的挂载选项(OPTIONS)。
从上面的3个比如中,都能够看出该案例体系的主文件体系是 ext4。而其它文件体系,都是挂载到主文件体系的某个特定目录下的。
4、常见的文件体系
文件体系 | 说明 |
根据磁盘的文件体系 | —— |
ext3 | 第3代扩展文件体系(Linux) |
ext4 | 第4代扩展文件体系(Linux) |
FAT32 | 32位文件分配表文件体系(Microsoft Windows) |
HFS+ | 层次式文件体系(Macintosh) |
ISO 9660 | ISO 9660 规范文件体系(CD-ROM) |
NTFS | NT 文件体系(Microsoft Windows) |
UDF | 通用磁盘格式文件体系(可重写CD和DVD) |
UFS2 | Unix 文件体系(BSD、Solaris) |
网络文件体系 | —— |
NFS | 网络文件体系(广泛运用) |
SMB | 服务器信息块(Windows网络) |
特别用处文件体系 | —— |
devpts | 伪终端的设备界面(PTY) |
procfs | proc 文件体系 |
sysfs | 体系数据文件体系(设备与驱动器) |
tmpfs | 暂时存储文件体系 |
根据磁盘的文件体系在硬盘、CD、DVD或其它设备上存储数据;网络文件体系支持经过网络同享资源;特别用处文件体系供给对体系资源的拜访(如伪文件)。
5、挂载点:/mnt 与 /media
广义地讲,存储设备有两种类型。固定介质永久附属于核算机中,例如硬盘、驱动器。可移动介质在体系运转时能够改动,例如 CD、DVD、软盘、闪存等。
该区别十分重要,因为文件体系存在消失的可能性,Unix 体系有必要保证恰当地办理该文件体系。例如,在答应弹出CD之前,Unix 有必要保证一切的输出操作都现已完成。
根据这一原因,文件体系层次结构需求运用特定的目录挂载文件体系。关于没有挂载在其它方位的固定介质(如额定的硬盘)来说,指定目录是 /mnt;关于可移动介质来说,目录是 /media。
三、文件类型
Unix 文件有许多不同的类型,可是它们都能够分成 3 类:一般文件、目录和伪文件。
1、一般文件
一般文件(ordinary)或惯例文件(regular)是大多数人在运用的单词“文件”时所指的文件。一般文件包含数据,坐落某种类型的存储设备上。
广义的讲,一般文件有两种类型:文件文件和二进制文件。
文本文件用于存储文本数据:纯文本、shell 脚本、源程序、配置文件等。
二进制文件包含非文本数据,常见的二进制文件:执行程序、目标文件、图画、音乐文件、视频文件、字处理文档、电子表格、数据库等。
2、目录
和一般程序类似,目录文件也驻留在某种类型的存储设备上。可是目录不寄存惯例数据,而是用来安排、拜访其它文件。从概念上讲,目录“包含”其它文件。
咱们运用目录将文件安排成一个类似于树的层次体系。详细安排时,将文件组合成组,再将每组文件存储在各自的目录中。因为目录自身便是文件,所以目录还能够包含其它目录,从而形成层次结构。
实践上,目录并不寄存实践文件,它只是包含文件 Unix 定位文件所需的信息。
3、伪文件
与一般文件和目录不同,伪文件并不用来存储数据,所以这些文件自身不占用任何空间。
伪文件的意图是供给一种服务,这种服采纳和惯例文件相同的拜访方法进行拜访。在大多数情况下,伪文件用来拜访内核供给服务的。
最重要的伪文件类型是特别文件,有时也称为设备文件。特别文件是物理设备的内部表明,例如键盘、显现器、打印机、磁盘驱动器都能够当作特别文件来拜访。(实践上,包含核算机或许网络中的每个设备)
命名管道是管道功用的一个扩展,它能够将一个程序的输出连接到另一个程序的输入上。
proc 文件答应拜访内核中的信息。少量几种特定情况下,甚至还能够运用 proc 文件修改内核中的数据。
四、根目录介绍
理解核算机文件体系最方便的方法便是检查根目录,并检查一切子目录。
1、常见根目录的目录结构
目录 | 内容 |
/ | 根目录 |
/bin | 根本程序 |
/boot | 发动体系时所需的文件 |
/dev | 设备文件 (后边会详细介绍) |
/etc | 配置文件 |
/home | 用户的 home 目录 |
/lib | 根本同享库,内核模块 |
/lost+found | 由 fsck 恢复的受损文件 |
/media | 可移动介质的挂载点(如USB驱动器、CD-ROMs等) |
/mnt | 不能挂载在其他方位上的固定介质的挂载点(如额定的硬盘) |
/opt | 用来安装“可选的”第三方应用软件(主要是商业软件产品) |
/proc | proc文件 (后边会详细介绍) |
/root | 超级用户的 home 目录 |
/sbin | 由超级用户运转的根本体系办理程序 |
/srv | 本地体系所供给服务的数据 |
/tmp | 暂时文件 |
/usr | 静态数据运用的辅佐文件体系 |
/var | 可变数据运用的辅佐文件体系 |
一般咱们把根目录下的一切子目录称为尖端目录。运用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
这个目录寄存最重要的体系,即体系办理员在单用户形式下办理体系所需的根本东西。这些东西都是可执行文件,因而该目录命名为 bin (binary 二进制),即寄存二进制文件的方位。该目录的一些程序也能够由惯例用户运用。
检查/bin目录下的前十个程序,如:
[nosee@instance-4 ~]$ ls /bin | head [ aa-enabled aa-exec ab addpart anthoscli apropos apt apt-cache apt-cdrom
2)/boot
这是体系寄存引导过程中所需全部文件的方位。内核有必要坐落这个目录或许根目录中。
如下能够看出,文件initrd.img-4.19.0-18-cloud-amd64便是该体系的内核文件。假如升级过体系,则会在该目录中发现不止一个版别的内核。
[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
一切特别文件都坐落这个目录中,包含物理设备和伪设备。(后边还会详细介绍)
4)/etc
这个目录包含的是配置文件。配置文件是某程序发动时处理的文本文件,其间包含有影响程序操作的指令或信息。
5)/home
当创立用户时,办理员会为用户标识赋予一个 home 目录,命名如:/home/用户标识
6)/lib
当程序运转时,常常要调用库,即现已存在的数据和代码模块。Unix 供给许多的库,以答应程序拜访操作体系供给的服务。这个目录包含运转/bin和/sbin目录中的程序所需的根本库和内核模块。
7)/lost+found
假如 Unix 没有正常地关机,那么那些仅完成部分写入的文件将受到损坏。Unix 下次发动时,一个叫 fsck(filesystem check 文件体系检查)的程序将主动运转,检查文件体系并修正问题。/lost+found 目录就用于保存由 fsck 恢复的受损文件。
8)/sbin
称号 /sbin 代表“system binaries 体系二进制文件”,这个目录中寄存用于体系办理的程序,一般这个目录中的程序有必要由超级用户运转。
9)/srv
储存为本地体系所供给服务的数据(service,因而命名为/srv)。在这里存储数据的典型服务包含 cgi、Web、ftp、cvs、rsync等。
10)/tmp
这个目录用于暂时存储。任何人都能够在这个目录存储文件,可是最终 /tmp 的内容将主动移除。
11)/usr
这个目录是辅佐文件体系的根,包含有辅佐文件体系的重要子目录。(集成到主文件体系中来的独自文件体系的挂载点)
/usr 的意图是用来寄存静态数据,即没有办理员干与不会改动的数据。根据其特性,静态数据不会随时刻改动。这就答应 /usr 驻留于自己的设备,该设备甚至有可能是诸如 CD-ROM 之类的只读设备。(后边还会详细介绍)
12)/var
这个目录的称号意味着“variable 可变”。像 /usr 一样,这个目录是辅佐文件体系的根,包含有辅佐文件体系的重要子目录。区别是,/var 寄存的是可变数据,如web网站文件、日志文件、打印文件、电子邮件消息等。像 /usr 一样,/var 文件体系一般驻留于自己的设备。
这其间比较重要的一个目录便是/var/log,里面包含各种体系活动的记载,还有各种程序的日志文件。
3、程序相关目录:bin、lib、sbin
目录 | 内容 |
通用程序 | —— |
/bin | 根本程序 |
/usr/bin | 非根本程序 |
/usr/local/bin | 本地安装程序 |
体系办理程序 | —— |
/sbin | 由超级用户运转的根本体系办理程序 |
/usr/sbin | 由超级用户运转的非根本体系办理程序 |
/usr/local/sbin | 本地安装的体系程序 |
第三方应用程序 | —— |
/opt/xxx | 应用程序xxx的静态数据,包含程序 |
/var/opt/xxx | 应用程序xxx的可变数据 |
检查/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等)
按照曾经的规则/bin是寄存根本程序的目录,/usr/bin是寄存非根本程序(大多数用户程序)的目录。/lib寄存根本同享库,而/usr/lib寄存非根本同享库。/sbin寄存由超级用户运转的根本体系办理程序,/usr/sbin
寄存由超级用户运转的非根本体系办理程序。
其实把以上这些程序分别寄存在两个类似的目录中,是由历史原因造成的。现在,存储设备现已十分快速,而且容量也更大了。所以现在许多 Unix 体系现已把这些同类的程序都存到了同一个目录中,可是曾经的目录结构还是保留下来。如下可知:
[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
五、特别文件
特别文件是表明物理设备的伪文件,Unix 将一切的特别文件寄存在/dev(device 设备)目录中。
1、检查特别文件
运用指令ls /dev/能够显现体系上特别文件的称号。
[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
其间,大多数称号是平时极少量需要运用到的。因为大部分特别文件是由体系程序运用的。
下表可将常见的特别文件分为3组:硬件、终端和伪设备。
特别文件 | 说明 |
-----硬件----- | 一切连接到核算机上的设备 |
/dev/fd0 | 软盘 |
/dev/hda | 硬盘 |
/dev/hda1 | 硬盘:第1分区 |
/dev/sda | SCSI 硬盘 |
/dev/sda1 | SCSI 硬盘:第1分区 |
/dev/sda1 | USB 闪存卡(被视为可移除的SCSI 硬盘) |
/dev/lp0 | 打印机 |
/dev/usb/lp0 | USB 打印机 |
-----终端----- | 能够把终端分为实践终端(独立的物理设备)和伪终端(终端仿真程序) |
/dev/tty | 当时终端 |
/dev/tty1 | 控制台/虚拟控制台 |
/dev/pts/0 | 伪终端 |
/dev/ttyp0 | 伪终端 |
----伪设备---- | 一个充任输入源或输出方针的文件,但并不对应实践设备(实在的或仿真的)。 |
/dev/null | 放弃输出,输入不回来内容(eof) |
/dev/zero | 放弃输出,输入回来 null(0) |
/dev/random | 随机数生成器 |
/dev/urandom | 随机数生成器 |
2、硬件
一切连接到核算机上的设备都经过特别文件拜访。
如/dev/fd0表明榜首个软盘驱动器,/dev/lp0表明榜首台打印机。(后边的数字指的是一个详细的设备,核算机程序一般从0开端计数)
硬盘的处理有点不同。如,榜首块 IDE 硬盘称为/dev/hda,第二块称为/dev/hdb,等等。
硬盘还被划分为一个或多个分区,分区能够作为独自的设备。榜首块硬盘的榜首个分区称为/dev/hda1,假如有第二个分区则为/dev/hda2。
3、终端
咱们能够把终端分为实践终端(独立的物理设备)和伪终端(终端仿真程序)。
运用指令tty能够检查当时运用的终端称号。(tty - print the file name of the terminal connected to standard input)
1)实践终端
充任硬件设备的终端运用的是/dev/tty命名约定,如/dev/tty1。在桌面环境运用虚拟控制台时,它也充任一个实践终端。默许情况下,Linux 支持6个这样的控制台,分别由特别文件/dev/tty1至/dev/tty6表明。
如:
[nosee ~]$ tty /dev/tty3
2)伪终端
当在窗口运用GUI运转终端仿真程序时,因为没有实践终端,所以 Unix 创立所谓的伪终端(pseudo terminal,pty)来模仿终端。因为有两种不同的体系来创立伪终端,因而能够看到两种类型的称号。
一种是/dev/ttyp0、/dev/ttyp1...这类称号;另外一种则是/dev/pts0、/dev/pts1...
如:
[nosee@instance-4 ~]$ tty /dev/pts/2
3)其它
为了方便起见,特别文件/dev/tty表明当时正在运用的终端。例如,你在运用虚拟控制台#3,那么/dev/tty与/dev/pts/3相同。
还能够这样玩:
六、proc 文件
proc 文件是那些供给一种简略的途径来检查多种类型的体系信息的伪文件, proc 文件直接从内核获取信息,而不是运用杂乱的程序搜出数据。(原始的 proc 文件体系是为了提取进程的信息而开发的)
一切的 proc 文件都寄存在/proc目录中。在这个目录中,能够发现体系中每个进程对应一个子目录。子目录的称号十分简略,便是各种进程的进程ID。ps(process status 进程状况)程序也是经过读取适宜的 proc 文件来收集所需数据的。
检查/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
现代的 Linux 体系运用该目录来寄存许多其它伪文件,供给许多内核数据拜访功用。如文件/proc/cpuinfo显现了有关处理器的信息。
常见的 proc 文件:
proc | 相关信息 |
/proc/xxx/ | 进程#xxx |
/proc/cmdline | 内核选项 |
/proc/cpuinfo | 处理器 |
/proc/decixes | 设备 |
/proc/diskstats | 逻辑磁盘设备 |
/proc/filesystems | 文件体系 |
/proc/meminfo | 内存办理 |
/proc/modules | 内核模块 |
/proc/mounts | 已挂载设备 |
/proc/partitions | 磁盘分区 |
/proc/scsi | SCSI 和 RAID 设备 |
/proc/swaps | 交换分区 |
/proc/uptime | 内核运转时刻(秒)和内核运转时刻(秒) |
/proc/version | 内核版别、分发、gcc 编辑器(用来构建内核) |
一般,除非是体系办理员,否则永久不需要检查这些 proc 文件的。
例1:检查我的 Debian 云主机的内核版别信息
[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 主机的内核版别信息
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:检查内存办理信息(榜首行的MemTotal:4040812 kB表明内存总大小约为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 大学教程》第二十三章 (美)Harley Hahn 著 张杰良 译