zoukankan      html  css  js  c++  java
  • 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  硬链接与符号链接

  • 相关阅读:
    Java的静态块与实例块(转)
    Programming Ability Test学习 1031. Hello World for U (20)
    Programming Ability Test学习 1011. World Cup Betting (20)
    Programming Ability Test学习 1027. Colors in Mars (20)
    Programming Ability Test学习 1064. Complete Binary Search Tree (30)
    Programming Ability Test学习 1008. Elevator (20)
    【maven详解-生命周期】Maven的生命周期和插件
    【maven详解-插件】maven插件学习之源码插件Source Xref
    $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
    你还没真的努力过,就轻易输给了懒惰
  • 原文地址:https://www.cnblogs.com/pengcc/p/4298200.html
Copyright © 2011-2022 走看看