对于linux文件结构的一些理解与总结

       最近在学习linux的树目录结构,也查一些资料。感觉参差不齐,大多都不具体,或者没有整体性,不能让人对Linux神奇的目录结构有个整体性的认知。这样对于理解文件结构会有点难度。所以在下想出一个好方法,来引导自己学习。这个主要要前期理解一些基本概念,后期的话重点是从FHS收集能来证明你的观点的论据.
       FHS(Filesystem Hierarchy Standard)相信大家都有看过或者听过,文件系统层次标准。为什么叫层次标准(我自己这样觉得),Linux本身的开源的自由的,但是它文件结构确实分层次,或者换句话说:文件结构里是一个严格的等级制度所呈现出来的结构。从顶端的根一直到端的目录或着文件。有种普天之下,莫非王土;率土之滨,莫非王臣的感觉。
       然后我们还有接受一个分类的概念。文件是共享还是不共享?文件是静态不变还是天天在变?如何来根据这些特性分出具体的目录出来?
       首先,文件共享与不共享:在linux系统本身就存在共享库的概念,lib下面的东东就是拿来共享的你不共享那系统就无法正常运行了,命令也无法正常用了。不共享的话,这个很好理解,就像你的秘密你的密码会跟人分享么,一般情况下是不会的。所以像/etc这样的秘密目录一般不可能共享的。
       其次,文件静态与动态之分。这个也很好理解,静态:即不变,在linux中最不能改变的东西是什么?内核跟还有配置,二进制可执行命令等等。逻辑上就能想得到,哪天一醒来发现,DHCP,DNS配置陪修改了,那不是悲剧了。动态的,什么东西需要天天变,日志嘛,每天收发邮件等等,这些都在变。
        总结,linux的目录整个都是靠这两组参数来设定的。所以你只要先判断这个文件共享么,这个文件可变么,就可以大致知道他是那一类的文件或者目录,便于理解整个文件目录分布的特点。
         讲了这么多下面来实践一下: 
[root@studnet20 ~]# cd /
[root@studnet20 /]# ls
bin             cgroup  home   lost+found  mnt     net   root     srv  tools
binutils-build  dev     lib    media       mnt2    opt   sbin     sys  usr
boot            etc     lib64  misc        mntiso  proc  selinux  tmp  var
       完完整整单根的倒置树形结构。在最上层的是/即根。那就是这个国家的领土了,领土是万万不能侵犯的.下面的目录一般来说都是一定需要的。现在来说下他们有什么大体的作用,这个在HFS里面只重点的部分。(这这里就要有上面的层次概念,还有是否共享与是否可变的参数)
 /root   /home
      //用户的家目录,包含用户绝大部分的个人配置,比较私有。

/boot
      //系统启动用的目录,包涵内核跟初始化内存文件系统,grub等,不可变。不可共享。
 
/media    /mnt
      //简单的区分:/media移动的介质挂载点,如usb,光盘等。/mnt的就是零时挂一些文件系统,如NFS这样。具体区别可以看FHS。
/bin  /usr/bin  /usr/local/bin    
     //这三个目录经常会有人搞混了,因为装的都是二进制可执行文件命令,一般的用户都可用的命令,干嘛要分三个地方呀?原因大体有二:为了节省/的压力。为了区分/bin。第一个好理解,第二个说的意思是强调/bin下的命令是linux系统的基本命令,强调地位,/bin没有的装在/usr/bin下,第三方的软件装置后只能放在这里/usr/local/bin local指出是本地,就是你的机子咯。

/sbin /usr/sbin /usr/local/sbin
     //sbin分三个地方放,大体是跟/sbin一个样。/sbin放的跟系统恢复,还原有些关系。带s的都是superuser用的。第三方的也只能放在/usr/local/sbin下。

/dev //device 设备的缩写,设备文件都在这。

/etc
     //配置文件,都放在这里哦,如果是第三方的软件,可能在./etc/opt下面。

 /usr
     //这个是经典的静态目录,其实是可以单独分区然后以只读的方式挂载,如果这样做可能有些文件要做些一些特定的软链接出来。

/opt //add-on
     //软件推荐的安装目录,默认情况,共享库还有命令,都会装到/usr这个目录下相对应的子目录里。

 /var /srv
     //经典的动态目录。mail池,服务器数据。等。/var里有一些经典的共享夹子,如mail等。

/tmp
     //经典的动态目录,存放缓存文件的。
介绍完这个,再来理解一个理念。你上面所看到的/
下面的目录分布,在某些子目录下一般也按这样的目录分布。例如:
   [root@studnet20 ~]# cd /usr/
   [root@studnet20 usr]# ls
   bin  games    java  lib64    local  share  tmp
   etc  include  lib   libexec  sbin   src    X11R6

 这个夹子里有:/bin /lib /etc /sbin /tmp

  再看这个:
  [root@studnet20 /]# cd /usr/
  [root@studnet20 usr]# cd local/
  [root@studnet20 local]# ls
 bin  etc  games  include  lib  lib64  libexec  sbin  share  src

这个夹子里有 /bin /etc /lib /sbin

     总结:这些目录的具体作用大体是这样定义的:大类上的功能加上小类上的区别与强化。这样就可知道为什么了.比如说:/usr/local/bin 单从大类上说:就是用户可执行的命令。从小类上看:不是系统的基本命令一般是第三方的命令。这样是不是就明了了!
     结合以上的这些,可能一部分未经FHS论证,无论对错,暂且先放在这。然后你在开始读FHS你会发现我这里错了,希望你也能分享一下你的经验。
说明:一定要去看看FHS哦,很有爱的。

本文出自 “kikupotter” 博客,谢绝转载!

你可能感兴趣的:(linux,linux,文件系统,fhs,文件结构,目录作用,目录分布)