每天一个Linux命令(23)--linux 目录结构(二)
二、/usr 的意义与内容
依据FHS的基本定义, /usr 里面放置的数据属于可分享的与不可变动的(shareable,static), 如果你知道如何透过网络进行分区的挂载(例如在服务器篇会谈到的NFS服务器),那么/usr 确实可以分享给局域网络内的其它主机来使用。
/usr 不是user的缩写,其实 usr 是Unix software resource 的缩写,也就是Unix 操作系统软件资源所放置的目录,而不是用户的数据啦。这点要注意,FHS建议所有软件开发者,应该讲他们的数据合理的分别放置到这个目录下的子目录,而不要自行建立软件自己独立的目录。
因为是所有系统默认的软件都会放置到/usr底下,因此这个目录有点类似 Windows 系统的 C:\windows\ + C:\Program fules\ 这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。一般来说,/usr 的子目录建议有底下这些:
目录 | 应放置文件内容 |
/usr/X11R6/ |
为 X Window System 重要数据放置的目录,之所以取名为X11R6 是因为 最后的X版本为 第11版,且该版的第6次出版。(原文台湾腔太浓,我有时候也蒙) |
/usr/bin/ |
绝大部分的用户可使用指令都放在这里。请注意到它与 /bin的不同之处。 (是否与开关机过程有关) |
/usr/include/ |
c/c++等程序语言的档案头(header)与包含档案(include)放置处,当我们以tarball 方式(*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档。 |
/usr/lib |
包含各应用软件的函式库、目标文件(object file), 以及不被一般使用者惯用的执行档 或脚本script。某些软件会提供一些特殊的指令来惊醒服务器的设定,这些指令也不会经常 被系统管理员操作,那就会被摆到这个目录下啦。要注意的是,如果你使用的是x86_64 Linux 系统,那可能会有/usr/lib64/目录自动生成。 |
/usr/local/ |
系统管理员在本机自行安装自己下载的软件时,建议安装到此目录,这样会比较便于管理。 举例来说,你的发行版提供的软件比较旧,你想安装较新的软件但又不想移除旧版,此时你 可以将新版本的软件安装于/usr/local 目录下,可与原先的旧版本软件区分开了。 /usr/local 下也是有一套子目录:bin. etc. include. lib 等 |
/usr/sbin |
非系统正常运作所需要的系统指令。 最常见的就是某些网络服务器软件的服务指令(daemon) |
/usr/share |
放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件。在此目录下常见的还有这些子目录: /usr/share/man: 联机帮助文件 /usr/share/doc: 软件杂项的文件说明 /usr/share/zoneinfo: 与时区有关的时区文件 |
/usr/src/ |
一般原始码建议放置到这里, src 有 source 的意思。至于核心原始代码则建议放置 在/usr/src/linux/ 目录下。 |
三、 /var 的意义与内容:
如果 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运作后才会渐渐占用磁盘容量的目录。 因为 /var 目录主要针对常态性变动的文件,包括缓存cache、登录档 log file 以及某些软件运作所产生的文件,包括程序文件 (lock file, run file), 或者例如MySQL数据库的文件等等。常见的子目录有:
目录 | 应放置的文件内容 |
/var/cache/ | 应用程序本身运作过程中会产生的一些暂存档 |
/var/lib/ |
程序本身执行的过程中,需要使用到的数据文件放置的目录。 在此目录下各自的软件应该要有各自的目录。举例来说,MySQL的数据库放置到 /var/lib/mysql/ 而rpm 的数据库则放到 /var/lib/rpm 去 |
/var/lock |
某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用 该装置时,就可能出现一些错误的状况,因此就得要将该装置上锁(lock), 以确保该装置只会给单一软件所使用。举例来说,刻录机正在刻录一块光盘,你想一下, 会不会有两个人同时在使用同一个刻录机烧片?如果两个人同时刻录,那片子写入的是 谁的数据?所以当第一个人在刻录时该刻录机就会被上锁,第二个人就得要在该设置 解除锁定后才能够继续使用。 |
/var/log/ |
非常重要的文件目录,这是登录文件放置的目录。里面比较重要的文件 /var/log/messages, /var/log/wtmp (记录登入者的信息)等。 |
/var/mail/ |
放置个人电子邮件信箱的目录,不过这个目录也被放置到 /var/spool/mail 目录中, 通常这两个目录是互为链接文件。 |
/var/spool |
这个目录通常放置一些队列数据,所谓的队列就是排队等候其他程序使用的数据。 这些数据被使用后通常都会被删除。举例来说,系统收到新信息会放置/var/spool/mail中, 但使用者收下这个邮件后原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue中 等到被送出后在删除。如果是工作定时任务数据(crontab),就会被放置到/var/spool/cron/目录中。 |
/var/run/ | 某些程序或者是服务启动后,会将他们的PID放置在这个目录下 |
由于FHS仅是定义出最上层 / 及次层 (/usr /var)的目录内容应该要放置的文件或目录数据,因此,在其他次目录层级内,就可以岁开发者自行来配置了。
四、目录数。(direcroty tree) :
在Linux 底下,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头,然后再一个一个的分支下来,因此,我们也称这种目录配置方式为:目录树(directory tree),这个目录树的主要特性有:
目录树的起始点为根目录(/, root)
每一个目录不止能使用本地端的 partition 到的文件系统,也可以使用网络上的 filesystem, 举例来说,可以利用 network file system(NFS)服务器挂载某特定目录等。
每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
目录树图(略)
五、绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意。因为根据档案名写法的不同,也可将所谓的路径path 定义为绝对路径 absolute 与相对路径 relative 。这两种文件名/路径的写法依据是这样的:
绝对路径:由最上层根目录开始写起, 例如: /home/ack/.bashrc;
相对路径:相对于目前路径的文件名写法。例如 ./home/ack 或 http://www.cncloud.tech/home/ack 等等。反正开头不是 / 就属于相对路径的写法。
更详细的说,相对路径就是以你当前所在路径为参照(pwd)
譬如我们当前在 /home 这个目录下,如果像要进入 /var/log 这个目录时,可以怎么写呢?
cd /var/log ---absolute
cd ../var/log ----relative
因为你在 /home 目录下,所以要回到上一层(../) 之后,才能继续往 /var 来移动。
注意: . 代表当前的目录,也可以使用 ./ 来表示
.. 代表上一层目录,也可以 ../ 来表示
实例:网络文件常常提到类似 ./run.sh 之类的数据,这个指令是什么意义呢?
由于指令的执行需要变量的支持,若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin 等正规),此时要执行指令就得要严格指定该执行档。 ./ 代表本目录, ./run.sh 代表执行本目录下, 名为 run.sh 的脚本。
每天一个Linux命令(23)--linux 目录结构(二)的更多相关文章
- Linux命令学习笔记目录
Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...
- Linux文件系统的主要目录结构说明及分区方案
Linux操作系统有一些固定的目录.各种Linux发行版的目录结构虽然不会一模一样,但是不会有很大差异.知道了这些目录的作用,不仅对你进行磁盘分区规划很有帮助,而且会让你以后的日常维护工作变得轻松.只 ...
- 比起Windows,怎样解读Linux的文件系统与目录结构?
比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- Linux命令——文件和目录管理
Linux命令--文件和目录管理 基本命令 命令ls 作用:显示目录下的文件和文件夹 说明:默认显示当前目录,可跟路径参数 参数:-a,显示隐藏目录 参数:-l,显示文件权限 参数:-d,显示文件最后 ...
- 20个Linux命令及Linux终端的趣事
20个Linux命令及Linux终端的趣事 . 命令:sl (蒸汽机车) 你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容.但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些 ...
- 自定义一个compass可编译的目录结构
在学习compass的过程中, 根绝文档说明,如果使用compass create myObject命令会创建一个标准的Compass项目目录结构,如下图: 此时如果使用compass compile ...
- 《sed的流艺术之四》-linux命令五分钟系列之二十四
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之三》-linux命令五分钟系列之二十三
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之一》-linux命令五分钟系列之二十一
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
随机推荐
- iOS workspace 依次编译多个工程
目的:当我封装一个framework的时候,需要检验当前的改动,但是又不想编译完framework,又要编译测试工程. 步骤: 1. 选择测试工程 2. Edit Scheme 3. 选中Build- ...
- JSON详解(转载)
JSON详解 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如何使用JSON 在.NET中如何使用JSON 总结 JSON的全称是”JavaScript Object Notation”, ...
- inheritprototype原型继承封装及综合继承最简实例
1.inheritprototype.js ;(function(){ var s = { inheritObject:function(o){//对象继承封装 ...
- QT第三天学习
回顾: 布局: 绝对位置法: 手工布局:QLayout 可视化布局:设计器 VB MFC JAVA C# cocos QT信号和槽 ---------------------------------- ...
- Struts2拦截器介绍
一.拦截器简介 Struts拦截器和Action的关系如图: 为了在使用拦截器时制定参数值,应通过<interceptor-ref -/>元素添加<param -/>子元素来为 ...
- Activity的生命周期与加载模式——Activity的生命周期演示
当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理.当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动 ...
- 天兔(Lepus)监控操作系统(OS)安装配置
监控和被监控端都要安装和配置snmp: [root@HE1bin]# yum install net-snmp* [root@HE1bin]# vi /etc/snmp/snmpd.conf 41行将 ...
- C#版--简单工厂模式
为什么要用设计模式? 1.设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上. 2.设计模式使程序易读.熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序. 3.设计模 ...
- WPF开发进阶 - Fody/PropertyChanged(二)
前一篇 简单的介绍了Fody/PropertyChanged的使用方法, 这一篇,我们详细介绍它的一些比较重要的特性和规则 1. Attributes 通过在类或属性上标记这些特性,可以在编译代码时, ...
- [Bullet3]创建世界(场景)及常见函数
创建世界(场景)及常见函数 官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases A ...