Linux: 根目录下文件夹的主要内容

In order to achieve a common rule for linux file system, there is a standard call FHS(filesystem hierarchy standard) for linux. 


Linux的根目录下的文件夹分为四类:

1)可共享且经常变动的:在/var下的mail、spool/news等。前者放置个人邮箱信息,后者spool底下的文件都是队列(排队等待别的进程使用的)数据。使用后会被删除。例如,邮件程序会把暂时发送不出去的邮件存在发件箱,实质就是存在这里,等发送成功后,删除这里的实质文件和清空发件箱。

2)可共享但一般不变的:/usr和/opt。共同点是,两者都是安装用户自定义的第三方软件的地方。后者是新版本开辟的专门用来安装第三方软件的文件夹。但根据老版本习惯,第三方软件,一般置于/usr/local当中。

3)不可共享且经常变动的:/var/run和/var/lock。前者是存储进程的PID而后者是提供线程的critical lock。

4)不可共享且一般不变的:/etc 和 /boot。前者用来放置配置文件。例如,用户的UID和用户名,各种服务(进程)的起始程序等。一般而言,所有的用户都能查询这些配置文件,但只有root可以更改。FHS建议不要放置可执行文件到这里。常见的/etc文件夹有:

① /etc/init.d/,所有的服务(进程)默认启动脚本。譬如具有TCP/IP包过滤功能的iptables就能通过:/etc/init.d/iptables start来启动,利用/etc/init.d/iptables stop来关闭;

② /etc/xinetd.d, 所谓的super daemon(xinetd)管理各项服务的配置文件目录;

③ /etc/X11,与XWindow有关的配置文件。xarg.conf是XServer的配置文件。

后者/boot 用来放置开机会使用到的文件,包括Linux内核文件(常用:vmlinuz作为文件名)。如果通过grub作为引导装载程序(来自GNU项目的多操作系统启动程序。GRUB是多系统启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统),还会有/boot/grub这个目录。


下面总结一下安装软件的目录:

1)/bin 用来放置系统所有用户都能用的常用指令的执行文件:cat, chmod, date, mv,bash,chown等。系统开机也需要用来这个文件夹。

2)/sbin 用来放置root用户用来设置系统环境的命令。而这些命令,连同/boot一起,都是开机的时候所需要的。如果是普通用户用到这些命令,则只能作为查询。如:ifconfig,init,mkfs,fdisk。


插一句题外话:上述命令的执行都需要调用到一些基本的函数库,这些函数库都在/lib底下存放。所以,/lib也是开机所需要的文件夹(加上/bin、/boot和/sbin)。尤其重要的是,/lib/modules是用来存放驱动程序的。


3)接下来介绍的文件夹是linux最为常用的一个装软件的:/usr。注意,/usr不是user的缩写,而是unix software resource。这个文件夹可以共享且一般不变。能通过网络进行分区的挂载(NFS服务器),共享这个文件夹。


/usr安装的是除了系统的基本命令之外的软件。如果属于系统默认提供的软件(非基本命令)一般都会安装在/usr之下。或者,有另一个区分的标准则是,如果这些命令(软件)和开机并没有关系,则一般都在/usr放置。所以,/usr下面有一套类似于根目录的配置:


① /usr/bin 放置与开机无关的基本命令,一般所有用户都能使用;

② /usr/sbin 放置与开机无关的系统设置命令,一般用户只能查询,root能进行设置;

③ /usr/lib 放置上述命令调用的函数库。


但是,如果不是系统默认提供,是用户自己安装的第三方软件呢?


一般放在/usr/local当中是最常的选择。当然新的Linux的FHS建议放在/opt文件夹。


当然,/usr下面还有自己独有的文件夹:

① /usr/include 里面放C/C++的头文件,c/c++的include需要检索的环境变量目录;

② /usr/share 是Linux的共享文件夹,一般放置不同架构都能读取的文本文件,如man在线帮助文件等。

③ /usr/src 放置源码文件。


上述提到的经常变动的/var文件夹,物如其名,是存放常态性变动的文件。存放缓存(cache)、登录文件(log file)、程序文件(lock file, run file)和如MySQL的数据文件:

除了上述例子之外,还有以下文件夹:

/var/cache是程序运行的暂存文件。

/var/lib/是程序的数据文件的目录。如MySQL则是/var/lib/mysql/,而rpm的则是/var/lib/rpm。(RPM 全名是『 RedHat Package Manager 』简称则为 RPM。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序)。

/var/log/ 则是登录文件的放置的地方。如/var/log/messages (包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中)和wtmp(包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等),都是记录登录者信息的文件。


Linux的根目录下还有另外几个常用的文件夹:

1) /dev Linux下的所有设备都以文件存在于这个目录下。访问这里的文件就相当于访问访问某个设备。一般而言,/dev/lp*就是打印机,/dev/hd*就是IDE接口的硬盘,/dev/sd*就是SATA(串行ATA)的硬盘。但这个文件夹也有两个特别的文件夹:


/hd*和/sd*属于linux的一种特殊文件夹,里面应有称为块特殊文件。使I/O设备看起来像文件一般,通过read的系统调用就可以进行读写。块特殊文件可以单独访问设备的第n块而不用考虑结构等因素。而打印机/lp*则是字符特殊文件。


详细参考:http://blog.csdn.net/pi9nc/article/details/18257593

① /dev/null,它是一个只能写不能读的设备。是一个无底洞。(/dev/null 是 Unix/Linux 里的【无底洞】,任何的 output 送去了【无底洞】就再也没了。相信我,真的没了)

② /dev/zero,是一个把任何输入都转换输出Null的设备,也就是编程二进制的0。



2)/mnt是挂在某些暂时额外的设备。而/media则是放置可删除的媒体设置的挂在,DVD、光盘等。Linux的抽象文件模型是树状结构的文件目录。有一个重要的概念叫安装文件系统,对于可移动存储介质,Linux使用把移动介质的文件系统接入到主文件树上的形式使用。使用mount的系统调用把移动介质的文件系统,链接到根文件系统上,通常就是mount到mnt的文件夹。



3)/tmp是放临时文件的,是FHS建议每次开机都清空的文件夹。

4)  /proc 放置的东西都在内存当中。是一个虚拟文件系统。存放系统内核、进程和外部设备的状态信息。如/proc/cpuinfo和/proc/ioports。详细参考:http://blog.csdn.net/zdwzzu2006/article/details/7747977

5)/sys 同样是放在内存的虚拟文件系统。记录与内核有关的信息。如已被加载的内核模块和内核检测到硬件设备信息。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值