linux 目录配置的依据-----FHS
linux 发行版他们的配置文件,执行文件,每个目录内放置的东西,其实都差不多。FHS 主要希望让用户可以了解到已安装软件通常放置在那个目录下,即规范每个特定的目录下应该放置什么样子的数据罢了。
FHS 依据文件系统使用的频繁与否与是否允许用户随意修改,而将目录定义成为四种交互作用的形态
可分享 | 不可分享 | |
---|---|---|
不变 | /usr 软件存放处 | /etc 配置文件 |
/opt 第三方辅助软件 | /boot 启动与内核文件 | |
可变动 | /var/mail 用户邮箱 | /var/run 程序相关 |
/var/spool/news 新闻组 | /var/lock 程序相关 |
- 可分享:可以分享给其他系统挂在使用的目录,包括执行文件与用户的邮件等数据,是可以分享给网络上其他主机挂载使用的目录
- 不可分享:自己机器上运行的设备文件或与程序有关的 socket 文件,由于仅与自己的及其有关当然不能分享
- 不变:有些数据不会经常变动,想函数库,文件说明,系统管理员所管理的主机服务配置文件等。
- 可变:日志文件等
- / (root,根目录):与启动系统有关
- /usr (unis software resource):与软件安装/执行有关
- /var(variable) 与系统运行过程有关。
根目录的意义与内容
根目录是整个系统最重要的一个目录,不但所有目录多是由根目录衍生出来,同时根目录也与启动、还原、系统修复等操作有关。
FHS建议:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放到同一个分区中,保持根目录越小越好,如此性能好,根目录所在的文件系统也较不容易发生问题。
FHS定义出根目录下应该有下面这些子目录的存在,即使没有物理目录也应该有链接目录才好
的一部分:FHS要求必须要存在的目录 | |
---|---|
/bin | 放置的是在单人维护模式下还能够被使用的命令,在 /bin 目录下的命令可以被root 与一般账号使用,主要有 cat chmod chhown date mv mkdir cp bash 等常用命令 |
/boot | 这个目录只要在放置启动时会使用到的文件,包括 Lunux 内核文件以及启动选项与启动所需配置文件等。Linux内核常用文件名为 vmlinuz |
/dev | 任何设备与接口设备都是以文件的形式存在于这个目录中,你只要通过读写这个目录下面的某个文件,就等于读写某个设备, |
/etc | 系统主要的配置文件就放在这个目录内,例如人员账号密码文件,各种服务的启动文件中,一般来说这个目录下的各文件属性可以让一般用户查看,但是只有root 可以修改。FHS建议不要放可以执行文件在这个目录 |
/lib | 放置的是在启动时会使用到的函数库,以及在/bin or /sbin 下面的命令会调用的函数库。 |
/media | 下面放置的就是可删除的设备,包括软盘光盘,DVD等设备都暂时挂载于此。 |
/mnt | 如果你想要暂时挂在某些格外的设备,一般建议你可以放置到这个目录中, |
/opt | 第三方辅助软件放置的目录,Kde这个桌面管理系统是一个独立的软件,不过它可以安装到linux 系统中,因此 KDE 的软件就建议放到这个目录下,如果你想要自己安装格外的软件,那么也能够将你的软件安装到这里来, |
/run | 系统启动后所产生的各项信息, |
/sbin | 启动过程中所需要的,里面包括了启动,修复,还原系统所需要的命令, |
/srv | 一些网络服务启动之后,这些服务所需要使用的数据目录,常见的服务例如www FTP。WWW服务器需要的网页数据就放到 /srv/www/里面 |
/tmp | 这是让一般用户或是正在执行的程序,暂时放置文件的地方,这个目录任何人都能够存取,所以要定期的清理一下,当然重要的数据不可能放在此目录, |
/usr /var | 第二次FHS 设置,后续介绍 |
FHS建议可以存在的目录 | |
/home | 这是系统默认的用户家目录。在你新增一个一般用户账号时,默认的用户家目录都会规范到这里来,家目录有两种代号,~ 代表这个用户的家目录,~nero 代表 nero 的家目录。 |
/proc | 这个目录本身是一个虚拟文件系统,他放置的数据都是在内存中,比如系统内核,进程信息,外接设备的状态及网络状态等,这个我觉得数据都是在内存中,所以不占任何硬盘空间, |
/sys | 这个目录也是一个虚拟文件系统,主要是进入内核与一系统硬件信息相关的内容,包括目前已加载的内核模块与内核检测到的硬件设备信息等, |
CentOS 7.X 就已经将 /sbin./bin/lib 都移动到了 /usr 下面。
/usr 的意义和内容
/usr 方式的数据属于可分享和不可变动,这个目录是操作系统软件资源放置的目录,不是 user 的缩写,是UNIS Software Resource 的缩写。。。FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录的子目录下,而不要自行建立该软件自己独立的目录,
因为是所有系统默认的软件(发行版发布者提供的软件)都会放置到/usr 下,有点像 Window 系统的 C:\Windows\ 中的一部分+ C:\Program Files\ 这两个目录的综合体
FHS要去必须存在的目录 | |
---|---|
/usr/bin | 所有一般用户能够使用的命令都放置到这里头,目前新的centos 7已经将全部的用户命令放到了里面,而使用链接文件的方式将 /bin连接到此,/usr/bin == /bin,另外FHS 要去此目录下不应该有子目录 |
/usr/lib/ | 与/lib 功能相同,索引 /lib 就是链接到此目录中。 |
/usr/local | 系统管理员在本机安装自己下载的软件,建议安装在此目录中,这样比较利于管理, |
/usr/sbin/ | 非系统正常运行所需要的系统命令,最常见的就是某些网络服务器软件的服务命令,不过基本功能与 /sbin 差不多,目前 /sbin 就是链接到此目录中 |
/usr/share | 主要放置只读的数据文件,当然也包括共享文件,这个目录下放置的数据几乎是不分硬件架构均可读取的数据,因此几乎都是文本文件 /usr/share/man 在线帮助文件 /usr/share/doc 软件的说明文件 /usr/share/zoneinfo 与时区有关的时区文件 |
FHS建议可以存在的目录 | |
/usr/games | 游戏相关的数据。。。人性化 i了i 了 |
/usr/include | C/C++ 等程序语言的头文件与包含文件的放置处,当我们使用Tarball 方式安装程序时,会用到里面的很多文件 |
/usr/libexec | 某些不被一般用户常用的执行文件或脚本等,例如大部分的x窗口下面的操作命令,很多都是放在此目录下, |
/usr/src/ | 一般源代码放在这里,至于内核源代码简易放置到 /usr/src/Linux 目录下 |
/var的意义与内容
如果说 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运行后才渐渐占用硬盘容量的目录。这个目录主要针对经常性变动的文件,包括缓存,日志文件以及某些软件运行所产生的文件,包括程序文件(look file,run file)。或例如 MySQL数据库的文件等。
要去必须存在的目录 | |
---|---|
/var/cache | 应用程序本身运行过程中产生的一些缓存 |
/var/lib/ | 程序本身执行的过程中,需要使用到的数据文件放置的目录,在此目录下各自的软件应该要有各自的目录。 |
/var/lock/ | 某些设备或是文件资源,一次只能被一个应用程序所使用,就需要将该设备上锁,以确保设备只会给单一软件使用,目前此目录也已经挪到了/run/lock中 |
/var/log/ | 这是日志文件方式的目录,非常重要, |
/var/mail | 放置个人电子邮箱的目录,不过也会放到./var/spool/mail目录中,通常这两个目录时互为链接文件。 |
/var/run/ | 某些程序或者是服务启动后,会将他们的pId放入到这个目录下,与./run 相同,这个目录链接到.run目录下 |
/var/spool | 这个目录通常放的是一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据使用后通常都会删除, |
☁ ~ ls -l / # 来查看一些根目录下的数据
总用量 20
lrwxrwxrwx. 1 root root 7 5月 12 21:23 bin -> usr/bin # 表示连接
dr-xr-xr-x. 5 root root 4096 5月 12 21:32 boot
drwxr-xr-x. 20 root root 3340 5月 27 21:00 dev
drwxr-xr-x. 140 root root 8192 6月 7 20:11 etc
drwxr-xr-x. 3 root root 18 5月 12 21:30 home
lrwxrwxrwx. 1 root root 7 5月 12 21:23 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 12 21:23 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 5月 12 21:26 opt
dr-xr-xr-x. 236 root root 0 5月 27 20:59 proc
dr-xr-x---. 5 root root 205 6月 7 20:11 root
drwxr-xr-x. 42 root root 1300 6月 7 20:15 run
lrwxrwxrwx. 1 root root 8 5月 12 21:23 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 5月 27 20:59 sys
drwxrwxrwt. 20 root root 4096 6月 7 21:13 tmp
drwxr-xr-x. 13 root root 155 5月 12 21:23 usr
drwxr-xr-x. 20 root root 282 5月 12 21:32 var
这就是为什么磁盘的分区有讲究了。。。
绝对路径与相对路径
根据文件名的写法,也可将所谓的路径定义为绝对路径与相对路径。
- 绝对路径:由根目录开始写起的文件名或目录名
- 相对路径:相对于目前目录的写法,例如:../../home/nero 等,反正开头不是 /
- . 代表当前目录
- .. 代表上一层目录
./run.sh 就是执行本目录下的 run.sh 文件