unix文件系统
文件就是任意源,有一个名称,可以从中写入读出数据。
文件类型
unix中有三种文件类型,普通文件,目录和伪文件。
普通文件是大多数时候所使用的文件,包括文本文件和二进制文件。例如,纯文本,shell脚本,源程序,配置文件,html文件等。
目录不同之处在于他们用来组织,访问其他文件。从概念上讲,目录包含其他文件。这个文件其实类似于windows下的文件夹。
伪文件有时候也称为设备文件。这种文件是物理设备的内部表示。例如键盘,显示器,打印机等,这些设备都可以当成一个文件进行访问。
有一种特殊的伪文件时proc文件,这种文件可以访问linux内核中的信息,设置可以修改Linux内核中的数据。
特殊文件
特殊文件就是表示物理设备的伪文件。这些文件都被存放于/dev下
一些常见的设备如下
位置 | 硬件 |
---|---|
/dev/sda | SCSI硬盘 |
/dev/sda | 第一分区 |
/dev/hda | 硬盘 |
/dev/Ip0 | 打印机 |
/dev/tty | 当前终端 |
/dev/random | 随机数生成器 |
/dev/null | 放弃输入 输入不返回内容 |
/dev/zero | 放弃送站,输入返回0 |
写入到/dev/null 或/dev/zero 中的任何文件都会被抛弃,因此这些文件又叫做位桶。
如果想读取随即数,只需要读取/dev/random。
mkfifo 命名管道
在前面我们已经介绍过了管道,那种管道是匿名管道,就是只有当程序运行的时候它才被创建。
命名管道与匿名管道的显著区别就是必须显式的创建管道,其次,当命令结束之后,管道并不会消失,而是会继续存在,除非使用命令删除他们。
通常将命名管道称为FIFO,实际上就是队列。
语法: mkfifo [-m mode] pipe
其中,mode是chmod程序使用的一种文件类型,pipe是希望创建的管道名称。
用途:经常被用来两个进程中的通信。
例:mkfifo fifotest
grep bash /etc/passwd > fifotest //第一个窗口上的命令
wc -l < fifotest //这是第二个窗口上的命令
如果想要去除管道,只需要rm + 管道名即可。
proc文件
proc文件时那些提供一些简单途径来检查多种类型的系统信息的伪文件。proc文件可以直接从内核中提取数据。
所有的proc文件都存放在/proc目录下,在这个目录中,可以发现每一个进程对应一个子目录。
如果想提取这些进程的信息,可以使用cat命令去找到当前有那些进程正在执行,如果进入这些目录,还可以知道这些进程的详细状态。
有一个特殊的proc文件,/proc/kcore,这个文件表示计算机的实际物理内存。可以使用ls -l选项查看这个文件的大小。
目录
根目录 子目录
目录是一个树形结构,对于每一层一定会有一个根,而用root过于麻烦,所以一般用/表示根目录。
例如 ls / 表示列举根目录下的所有文件。这样 ls /bin代表列bin目录下的所有文件。但是实际上如果列举根目录下的文件是不需要加/的,直接加上名字就好了,如果想访问根目录下子目录中的文件,就需要在子目录和子目录文件之间加一个/
例如: ls homework/bomb
mount umount挂载文件系统
在系统中,有许多设备,也就有许多个文件系统。但是如果都是完全分隔的话,没办法在不同文件系统之间进行访问,所以一定有一颗主树,然后其他树挂载在主树上,这一个个文件系统其实类似于windows下的磁盘分区。
当小的文件系统连接上主树时,我们称为挂载。小文件系统附加到主树上的目录叫做挂载点
一般来说,系统已经自动挂载好了子树,但是有时候需要我们手动挂载子树(例如插入u盘时,当然现在也是自动挂载了)。这时需要mount程序。这里不再展开
漫游根目录
目录 | 内容 |
---|---|
/ | 根目录 |
/bin | 基本程序 |
/boot | 启动系统时所需要的文件 |
/etc | 配置文件 |
/dev | 设备文件 |
/home | 用户home目录 |
/lib | 基本共享库,内核模块 |
/lost+found | 由fsck恢复的受损文件 |
/media | 可移动介质的挂载点 |
/mnt | 不能挂载在其他位置的挂载点 |
/opt | 第三方应用程序 |
/proc | |
/root | 超级用户home目录 |
/srv | 本地系统提供服务的数据 |
/tmp | 临时文件 |
/usr | 静态数据使用的文件系统 |
/var | 可变数据使用的文件系统 |