• Linux文件的类型


    在Linux中文件的类型是通过文件权限的首位定义的,可以分为以下几类。

    1.普通文件

    普通文件包括源程序文件、脚本文件、可执行程序文件及各种数据文件。普通文件的文件类型标识位为"-",使用ls命令可以查看文件的类型,例如:

    1. #ls  -l  suple  
    2. -rw-r--r--   1 root root   540 07-23 08:31 suple 

    2.目录文件

    目录实际上是一种特殊的文件。目录下可以包含文件和子目录。目录文件的类型标识位为"d",如下所示:

    1. #ls  -l  tmp  
    2. drwxrwxrwt  21 root root  4096 07-25 22:49 tmp 

    3.套接字文件

    套接字(socket)是用来进行网络通信的常用方法之一。Linux文件系统可以通过套接字文件实现网络通信。套接字的文件类型标识位为"s",例如:

    1. #ls  -l  x1  
    2. srwx------  2 root root  0 07-25 17:49 x1 

    4.命名管道

    文件系统通过命名管道文件可以实现进程间的通信。命名管道的文件类型标识位为"p",例如:

    1. #ls  -l  p1  
    2. prwx------  2 root root  0 07-25 17:59 p1 

    5.设备文件

    Linux系统将设备识别为特殊的文件进行处理。设备文件可以分为两类:字符设备和块设备。字符设备的文件类型标识位为"c",打印机、键盘等都属于字符设备。磁盘、磁带等都属于块设备,块设备的文件类型标识位为"b"。在系统的/dev目录下存放了大量的设备文件,例如字符终端tty1的设备文件为/dev/tty1。使用ls命令可以看到字符设备的首字符为"c",块设备的首字符为"b",如下所示:

    1. #ls  -l  /dev/tty1  
    2. crw-------  1 root root     4,    1 07-25 05:44 tty1  
    3. #ls  -l  /dev/sda1  
    4. brw-r-----  1 root disk     8,    1 07-25 05:41 sda1 

    6.链接文件

    为了使用、管理的方便和节省磁盘空间,Linux 允许一个物理文件有一个以上的逻辑名,即可以为一个文件创建一个链接文件,用来表示该文件的另一个名字。不同的链接文件可为之指定不同的访问权限,从而实现既可共享,又可安全控制的目的。

    Linux文件系统中有两类链接文件:一类叫做硬链接,一类叫做符号链接。硬链接的文件类型标识位与被链接的文件相同。不带参数使用ln命令可以建立硬链接文件,例如对sysv文件建立硬链接的命令如下:

    1. # ls  -il  sysv  
    2. 390162 -rw-r--r-- 1 root root 0 07-26 00:51 sysv  
    3. # ln  sysv syslink  
    4. # ls  -il  sysv slink  
    5. 390162 -rw-r--r-- 2 root root 0 07-26 00:51 slink  
    6. 390162 -rw-r--r-- 2 root root 0 07-26 00:51 sysv  

    从本例中可以看出硬链接文件slink与被链接的文件sysv指向同一个i节点(节点编号390162),硬链接与被链接的文件具有相同的文件类型标识位"-",建立硬链接后,文件的链接数由1变为2。

    实际上硬链接只是源文件的一个硬复制,它们在目录文件中的入口项指向的是同一个i节点。只有当硬链接的全部链接被删除时才能够释放此i节点。用户对这个文件所做的任何修改,所有的硬链接都可以同步看到。硬链接的文件必须在同一个文件系统中,目录不能建立硬链接。

    建立符号连接可以使用带参数"-s"的ln命令,符号链接只是指定到真实文件的访问路径上,与源文件的i节点号不同。如果源文件被删除,符号链接就被损坏了。符号链接的文件类型标识位为"l"。例如为文件ftpuser建立符号链接fuser,命令如下所示:

    1. # ls  -il  ftpuser  
    2. 390161 -rw-r--r-- 1 root root 0 07-26 01:17 ftpuser  
    3. # ln  -s  ftpuser  fuser  
    4. # ls  -il  ftpuser fuser  
    5. 390161 -rw-r--r-- 1 root root 0 07-26 01:17 ftpuser  
    6. 390162 lrwxrwxrwx 1 root root 7 07-26 01:18 fuser -> ftpuser  
    7. # rm  ftpuser  
    8. rm:是否删除 一般空文件 "ftpuser"? y  
    9. # ls  -il  ftpuser  fuser  
    10. ls: ftpuser: 没有那个文件或目录  
    11. 390162 lrwxrwxrwx 1 root root 7 07-26 01:18 fuser -> ftpuser 

    可以看到ftpuser与fuser的i节点号不同(ftpuser为390161,fuser为390162),fuser的文件类型标识位为"l"。源文件ftpuser被删除后,符号链接文件报错。

    与硬链接不同,符号链接可以跨文件系统建立,并且可以指定到目录。硬链接与符号链接的区别如图6.3所示。

     
    图6.3  硬链接与符号链接

  • 相关阅读:
    主键为整型数据库设计
    raid1与raid5
    asp.net限时发送手机验证码
    利用jQuery与.ashx完成简单的Ajax
    Solr使用in语法查询
    Solr高效利用:Solr实现SQL的查询与统计
    lucene 的评分机制
    fastcgi配置
    安装elasticsearch及中文IK和近义词配置
    php多进程处理
  • 原文地址:https://www.cnblogs.com/pengcc/p/4298200.html
Copyright © 2020-2023  润新知