Linux文件类型

Linux文件种类
  • 正规文件(regular file)

    - 的文件,另外依照文件的内容又大致分为:

    • 纯文本文档(ASCII):比如使用 cat ~/.bashrc,就能把该文件内容读取出来

    • 二进制文件(binary):可执行文件 scripts (文字型批处理文件不算)

    • 数据格式文件(data):有些程序运行中会读取某些特定文件格式的文件

      比如 linux 在登录时,会将登录的数据记录在 /var/log/wtmp 文件内, 但是使用 cat 时,会读出来乱码,因为是一种特殊格式的文件

    笔者唯一没有明白的就是 二进制文件,怎么是 scripts 文件呢?

  • 目录(directory):d

  • 连接文档(link):类似 windows 中的快捷方式,用小写(L)的 l 表示

  • 设备与装置文件(device)

    与系统周边及存储等相关文件,通常都集中在 /dev 这个目录下,通常又分为两种:

    • 区块(block)设备文档:使用 b 表示

      就是一些存储数据,供系统随机存取的接口设备,比如硬盘、软盘等。 可以随机在硬盘的不同区块读写。可以看看 /dev/sda 会发现第一个属性就是 b

    • 字符(character)设备文件:用 c 表示

      一些串行端口的接口设备,例如键盘鼠标等。这些设备的特性就是一次性读取的,不能够截断输出。 举例来说,你不可能让鼠标跳跃到另一个画面,而是连续性滑动到另一个地方

  • 数据接口文件(sockets):用 s 表示

    这种类型的文件通常被用在网络上的数据承接。启动程序监听客户端的请求,客户端透过这个 socket 来进行数据的沟通 最常在 /run 或 /tmp 这个目录中

  • 数据传送文件(FIFO,pipe):使用 p 表示

    FIFO 也是一种特殊的文件类型,主要目的在解决多个程序同时存取一个文件所造成的并发错误问题, 是 first-in-first-out 的缩写

Linux目录配置的依据FHS

FHS(Filesystem Hierarchy Standard)标准:让使用者可以了解到已安装软件通常放置于哪个目录下

-可分享的(shareable)不可分享的(unshareable)
不变得(static)/usr(软件放置处)/etc (配置文件)
-/opt(第三方软件)/boot (开机与核心)
可变动的(variable)/var/mail (使用者邮箱)/var/run (程序相关)
-/var/spool/news (新闻组)/var/lock (程序相关)
  • 可分享的:

    可以分享给其他系统挂载使用的目录;所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录

  • 不可分享的:

    自己机器上面运行的装置文件或则是与程序有关的 socket 文件等,由于仅与自身机器有关,就不适合分享了

  • 不变得:

    有些数据是不会经常变动的,跟随 distribution 而不变动的。例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等

  • 可变动的:

    经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等

下面是Linux的文件树图

在这里插入图片描述

根目录

根目录是整个系统最重要的一个目录,里面所有的目录都是由根目录衍生出来的,FHS 定义出根目录下应该要有以下目录存在

根目录下的主要文件有

  • /bin

    系统有很多放置执行文件的目录,单 /bin 比较特殊。 因为放置的是在单人维护模式下还能够被操作的指令。

    /bin 下的指令可以被 root 与一般账户所使用,主要有 cat、chmod、chown、date、mv、mkdir、cp、bash 等常用命令

  • /boot

    主要放置开机会使用到的文件,包括 linux 核心文件以及开机选单与开机锁需配置文件等。

    Linux kernel 常用额文件名为 vmlinuz ,如果使用 grub2 开机管理程序,则还会存在 /boot/grub2 这个目录

  • /dev

    任何装置与接口设备都是以文件形态存在这个目录当中。只要透过存取这个目录下的某个文件, 就等于存取某个装置,比较重要的文件有 /dev/null、/dev/zero、/dev/tty、/dev/loop*、/dev/sd* 等

  • /etc

    系统主要的配置文件几乎都放在这个目录中,例如人员的账户密码文件、各种服务的启动文件等, 一般来说,这个目录下的各文件属性是可以让一般使用者查阅的,但是只有 root 有权利修改。

  • /lib

    lib 下放的是在 开机时会用到的函数库,以及在 /bin 和 /sbin 下的指令会呼叫的函数库。

  • /media

    放的是可移除的设备,例如 软盘、光盘、 DVD 等都暂时挂载于此。

  • /mnt

    如果暂时挂载某些额外的设备,一般建议可以放到这个目录中,在很早的时候该目录用途与 /mnt 相同, 只是有了 /media 后,这个目录就用来暂时挂载用了

  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /tmp

    一般用户或则是正在执行的程序暂时放文件的地方。该目录是任何人都可以存取的,所以需要定期清理一下。 因此 FHS 甚至建议在开机时,应该删除该目录下的文件

  • /home

    系统默认的用户目录。在你新增一个一般使用者账户时,默认的用户家目录都会规范到这里来。 比较重要的是,家的木有两种代号:

    • ~:代表目前这个用户的家目录
    • ~mrcode:则代表 mrcode 的家目录
  • /sbin

    Linux 有非常多的指令是用来设置系统环境的,这些指令只有 root才能够利用来设置系统, 其他用户只能用来「查询」。放在 /sbin 下的为开机过程中所需要的,包括了开机、修复、还原系统所需要的指令。

/usr

/usr 里面放置的数据属于可以分享的与不可变动的.

/usr 不是 user 的缩写,而是 Unix Software Resource 的缩写(Unix 操作系统软件资源)

一般来说 /usr 的此目录建议有以下:

第一部分:FHS 要求必须要存在的目录

  • /usr/bin/

    所有一般用户能够使用的指令都放在这里。 CentOS7 新版已经将全部的用户指令放在这里, 而使用连接文件的方式将 /bin 连接到这里。也就是说 /usr/bin 与 /bin 是一样的了。 而且 FHS 要求在此目录下不应该有子目录

  • /usr/lib/

    基本上 与 /lib 功能相同,使用 /lib 就是连接到此目录的

  • /usr/local/

    系统管理员在本机自行安装自己下载的软件(非 distribution 默认提供),建议安装到此目录。 比如,distribution 提供的软件较旧,想安装新的但是又不想移除旧版本的,就可以将新版安装到这里。

    该目录下也是具有 bin、etc、include、lib 的次目录

  • /usr/sbin

    非系统正常运作所需要的系统指令。最长久的就是某些网络服务器软件的指令(daemon)。 不过功能基本与 /sbin 差不多,因此 /sbin 也是连接到此目录的

  • /usr/share/

    主要放置只读架构的数据文件和共享文件。在该目录下的数据几乎是不分硬件架构均可读取的数据, 因为几乎上都是文本文件。常见的还有以下次目录

    • /usr/share/man:联机帮助文件
    • /usr/share/doc:软件杂项的文件说明
    • /usr/share/zoneinfo 与时区有关的时区文件

第二部分:FHS 建议可以存在的目录

  • /usr/games/:与游戏比较相关的数据

  • /usr/include

    c/c++ 等程序语言的档头(header)与包含档(include)放置处,当我们以 tarball 方式 (tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档

  • /usr/libexe

    某些不被一般使用者惯用的执行档或脚本,例如大部分的 x 窗口下的操作指令

  • /usr/lib<qual>

    /lib<qual> 功能相同,连接过来的

  • /usr/src

    一般源码建议放这里,src 有 source 的意思。 至于核心源码则建议放到 /usr/src/linux 目录下

/var

主要放置的是针对常态性变动的文件,包括 cache、登录文件(log file)以及某些软件所产生的文件, 包括程序文件(lock file,run file),或则例如 mysql 数据库的文件等, 常见的目录有

  • /var/cache:应用程序运行中使用的缓存文件

  • /var/lib

    程序本身执行过程中,需要用到的数据文件存放处。在此目录下各自的软件应该要有各自的目录, 比如:mysql 数据库放到 /var/lib/mysql 而 rpm 的数据库则放到 /var/lib/rpm

  • /var/lock

    某些装置或是文件资源一次只能被一个程序使用,所以这里存放的是加锁的标识, 目前此目录已经挪到 /run/lock 中了

  • /var/mail:个人电子邮件信箱目录,不过也被放置到了 /var/spool/mail 中了,通常两个目录互为连接文件

  • /var/run

    某些程序或则是服务启动后,会将他们的 PID 放置在这个目录下,与 /run 相同,也连接到 /run 下了。 至于 PID 后续讲解

  • /var/spool

    通常放置一些对了数据,这些数据被使用后通常都会被删除。 比如:系统受到新信会放到 /var/spool/mail 中,但使用者手下该信件后该封信原则上就会被删除。 信件如果展示寄不出去,则会放到 /var/spool/mqueue 中。等待被送出后会被删除。

    如果是工作排程数据(crontab)就会被放到 /var/spool/cron 目录中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,文件类型是非常重要的概念。文件类型可以帮助我们判断文件的用途,从而决定如何处理它们。在Linux系统中,常见的文件类型有以下几种: 1. 普通文件(Regular file):这是最常见的文件类型,包括文本文件、二进制文件等。普通文件可以被编辑、读取和执行。 2. 目录文件(Directory file):目录文件用于存储其他文件和目录的列表。目录文件可以被读取和执行,但不能被编辑。 3. 设备文件(Device file):设备文件用于访问系统中的硬件设备,包括磁盘、打印机、串口等。设备文件可以被读取和写入,但不能被执行。 4. 管道文件(Named pipe):管道文件用于进程间通信,可以将一个进程的输出连接到另一个进程的输入。管道文件可以被读取和写入,但不能被执行。 5. 链接文件(Symbolic link):链接文件是指向另一个文件或目录的符号链接。链接文件可以被读取和执行,但不能被编辑。 6. 套接字(Socket):套接字用于进程间的网络通信。套接字可以被读取和写入,但不能被执行。 7. 其他文件类型(Other file types):还有一些其他的文件类型,比如FIFO文件等。 可以使用命令ls -l来查看文件类型。在文件的权限位中,第一个字符表示文件类型,其中“-”表示普通文件,“d”表示目录文件,“c”表示字符设备文件,“b”表示块设备文件,“p”表示管道文件,“l”表示链接文件,“s”表示套接字。例如,-rw-r--r--表示一个普通文件,drwxr-xr-x表示一个目录文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值