一、linux系统目录结构
1.1基本特点
1、在逻辑上所有目录都是在最高级别的目录根下,顶点/,其他所有目录都在根下
2、目录和设备没有关系(每一个目录可以是一个分区)
3、根下面的目录及目录的子目录是一个有层次的树状结构
4、很像一颗树倒挂着的一颗大树
5、linux的目录结构和磁盘分区时分离的,自由组合
结构图:
挂载:给设备设置一个入口(linux的目录,绝对路径)
linux下面设备默认是没有入口的(没门没窗口的监狱)
mount
/dev/sda1 /mnt
mount实现挂载的命令
/dev/sda1 第一块硬盘的第一个分区
被挂载的目录/mnt 称为挂载点
1.2小结:
1、linux系统的所有目录是一个有层次的倒着的树状目录结构,“/”是所有目录的起点
2、不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备
3、所有的目录都是按照一定的类别有规律的组织和命名
4、linux系统里的设备默认情况是无法访问的,需要进行挂载
5、挂载就是给设备一个访问的入口,这个入口是linux的目录,一般使用绝对路径,这个目录入口被称为挂载点
6、实现挂载的命令为mount,卸载unmount.
7、通过df -h 查看系统的分区情况
8、系统分区时通过配置/etc/fstab实现开机自动挂载
二、目录结构
2.1FHS目录层次标准
定义两层规范
FHS(Filesystem
Hierrarchy Standard)文件目录结构标准
第一层:是“/”目录下的各个目录应该放什么文件数据
例如:/etc目录下放置系统的配置文件,/bin和/sbin放置程序及系统命令
第二层:/usr (unix software resource|secondary
hierarchy)
/proc操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里
2.2Unit系统目录结构历史
第一块 系统相关程序 /
第二块 用户自己的程序 /usr
除此之外,两块硬盘里面的其他的目录结构是完全相同的
第三块 /home用于存放用户数据
2.3重要的一级目录汇总
/bin
系统的二进制命令
/boot linux内核及系统引导程序所需的文件目录
[[email protected] ~]# du -sh /boot 查看目录或文件大小
39M
/boot
/dev 设备文件的目录
/etc 配置文件的默认路径(二进制安装包yum/rpm)
(fstab、issue、motd、progile)
/etc/init.d 服务启动命令存放目录
/home 普通用户家目录所在目录
/lib 共享库和内核模块文件存放目录
>----库是处于应用程序和系统之间的一个角色
/lost+found 存放系统意外崩溃或意外关机产生文件碎片。
/mnt 临时挂载存储设备的挂载目录
/opt 可选的安装包的目录
/proc 进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。
free –m 查看内存
cat /proc/loadavg 负载(系统繁忙程度)
cat /proc/meminfo 内存信息
cat /proc/cpuinfo cpu信息
cat /proc/mounts 挂载信息
内核:/proc/sys/net/ipv4/ip_forward对应/etc/sysctl.conf
/etc/sysctl.conf的配置参数
net.ipv4.ip_forward = 0
/root 超级用户的家目录
/sbin 超级用户root可执行的命令目录
/tmp 临时目录
/usr 用户安装的程序,系统程序的目录
/var 可变化的目录存放系统日志信息,
/var/log/messages ----> system messages from syslogd(系统日志文件)dmesg
/var/log/secure ---->system secure messages
2.4重要目录小结:
/etc/
配置文件目录(系统配置及服务配置文件、启动命令的目录)
/etc/init.d/ 启动命名目录
/etc/hosts 主机名解析文件
/etc/fstab 开机自动挂载文件
/etc/inittab 系统开机加载的文件(设置运行级别,初始化系统配置,加载相应级别的脚本)
/etc/profile 全局的环境变量配置文件
/etc/motd 登录信息显示的文件
/etc/sysconfig/i18n 字符集配置
/dev
设备文件目录
例如:/dev/sda
/mnt
临时挂载点目录
/lost+found 意外关机或崩溃文件碎片所在的目录。fsck。
/proc 内核与进程信息的的虚拟文件系统
/proc/meminfo
/proc/cpuinfo
/proc/loadavg
内核:/proc/sys/net/ipv4/ip_forward对应/etc/sysctl.conf里的配置。
/bin
用户二进制命令的目录
/sbin
超级用户二进制命令的目录
/lib
库文件的目录
/usr
用户安装的程序,系统程序的目录
/usr/local 用户安装的程序(c:\program files)
/var
可变化的目录,系统日志,安全日志等的目录
/var/log/messages,/var/log/secure
/tmp
临时的系统目录
/home
普通用户家目录所在目录 ~
/root
超级用户的家目录 ~
/opt
可选的目录,用户安装程序的目录,厂商的目录。
/boot
系统引导程序的目录
三、重要的子目录
3.1.网卡的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
之前使用setup命令修改网卡配置就是改上述文件
[[email protected] ~]# cat
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #<==物理设备名,eth0表示第1块网卡
HWADDR=00:0c:29:2f:c5:63#<==网卡的MAC地址,48位。
TYPE=Ethernet #<==网络类型:以太网
UUID=a24d1033-520c-4958-bf04-2d55c55409ec
<==用户标示
ONBOOT=yes #<==控制网卡是不是开机启动
NM_CONTROLLED=yes 网络管理
BOOTPROTO=static #<==其中,proto取下列值之一:none,引导
时不使用协议;static静态分配地址;bootp,使用BOOTP协议
,或dhcp,使用DHCP协议。
IPADDR=10.0.0.8 #<==addr是ip地址
NETMASK=255.255.255.0 #<==子网掩码,划分网络位和主机位
DNS2=8.8.8.8 #<==DNS把baidu.com变成了baidu服务器IP
。DNS就是域名和IP的解析工具。
GATEWAY=10.0.0.2 #<==网关地址,路由器的地址
DNS1=10.0.0.2
IPV6INIT=no
USERCTL=no
DNS:Domain
Name System 主要功能把上网的域名解析成服务器IP
DHCP:动态主机配置协议,局域网动态分配ip地址的协议
3.2.客户端DNS的配置文件
/etc/resolv.conf
[[email protected] ~]# cat /etc/resolv.conf客户端DNS
nameserver 10.0.0.2
nameserver 8.8.8.8
*企业面试题
linux系统下DNS客户端的配置文件是————。
解答:/etc/resolv.conf
setup#→“network
configuration”#→"DNS
configuration"
小结:
1、客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)
2、客户端DNS也可以在/etc/resolv.conf里设置。
3、网卡里的设置DNS优先于/etc/resolv.conf。
3.3./etc/hosts
-->设定用户Ip与域名的对应解析表,相当于本地LAN局域网内的DNS
用于程序员开发测试,运维人员服务器之间调用。
/etc/hosts
:局域网 主机名和IP解析,相当于DNS工具(手动维护的)。
10.0.0.8 www.baidu.com
对应windows文件C:\WINDOWS\system32\drivers\etc\hosts
hosts企业里的作用:
1、开发,产品,测试等人员,用于通过正式的域名测试产品。
2、服务器之间的调用可以用域名(内部的DNS),方便迁移。
3.4./etc/sysconfig/network
>----修改主机名配置网关
主机名的配置文件:可以修改主机名以及网卡启动,网关等配置。
[[email protected] ~]# hostname oldboy 《==临时生效,退出重新登录生效
[[email protected] ~]# cat
/etc/sysconfig/network 改配置:下一次开机生效。
NETWORKING=yes
HOSTNAME=oldboy
[[email protected] ~]# grep
‘/etc/sysconfig/network‘ /etc/init.d/network
if [ ! -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
cd /etc/sysconfig/network-scripts
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global start pre
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global start post
if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
/etc/sysconfig/network-scripts/init.ipv6-global stop post
3.5. /etc/fstab
>----设置开机启动自动挂载磁盘的文件
fstab设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区
[[email protected] ~]# df -h 以人类可读的信息查看磁盘的挂载信息
Filesystem Size
Used Avail Use% Mounted on
/dev/sda3 6.9G
1.5G 5.0G 24% /
tmpfs 497M 0
497M 0% /dev/shm
/dev/sda1 190M
36M 145M 20% /boot
挂载:
1.命令手动
mount -t ext4 -o noexec /dev/sda1
/mnt 命令写入fstab为如下形式:
====================================
/dev/sda1 /mnt
ext4 default 0 0
光驱的挂载:
mount -t iso9660 /dev/cdrom /mnt
[[email protected] ~]# cat /etc/fstab
[email protected] ~]# dd if=/dev/zero of=/dev/sdb1
bs=4096 count=10
记录了10+0 的读入 (模拟虚拟磁盘文件)
记录了10+0 的写出
40960字节(41 kB)已复制,0.00154423 秒,26.5 MB/
2 /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Sep 27
17:28:18 2015
#
# Accessible filesystems, by reference,
are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8),
mount(8) and/or blkid(8) for more info
#
UUID=ff53d3c3-5c52-4964-9dc7-a00717d9ceb7
/ ext4 defaults 1 1
UUID=507de718-3dff-4f02-8972-8069bc83c2ad
/boot ext4 defaults 1 2
UUID=af77052f-911c-4646-86f8-494e08e8e9e7
swap swap defaults 0 0
设备 挂载点 FS类型 参数 备份检查
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
第一列挂载的设备可以是设备名或UUID,或磁盘标签
测试手动挂载:
1、创建了一个虚拟的块设备
dd if=/dev/zero of=/dev/sdb1 bs=4906
count=100
2、格式化
mkfs.ext4 /dev/sdb1
3、挂载
mount -t ext4 -o loop,noatime,noexec
/dev/sdb1 /mnt
4、查看
df -h
fstab:
出问题:修复:
1)开机提示,输入密码修复
2)救援模式,rescue
修改/etc/fstab只读状态 ,mount -o rw,remount 、
mount挂载和fstab问题
NSF网络文件系统挂载时,网卡还没起,就已经加载fstab了
monut
-t nfs 10.0.0.8:/data /mnt
[[email protected] ~]# blkid 查看设备对应UUID
/dev/sda1:
UUID="b276175c-ee20-4a9b-9194-cf5cd6551850" TYPE="ext4"
/dev/sda2:
UUID="fb4e92e6-3b20-4e45-9ab9-662fdc28e79d" TYPE="swap"
/dev/sda3: UUID="ecb5a832-3e56-4692-aaa6-f7c3a9cd5c07"
TYPE="ext4"
3.6./etc/rc.local
>---用于存放开机自启动程序命令的文件(chkconfig常用来管理yum/rpm安装的程序的服务的开机自启动),开机时会把/etc/rc.local里的内容执行一遍。
让一个程序开机启动:
1)chkconfig(/etc/init.d/sshd)
2)放入/etc/rc.local
建议选择:/etc/rc.local
我们把/etc/rc.local,服务器档案文件。
所有程序开机启动放入/etc/rc.local,注释。
3.7./etc/inittab
>----系统开机启动要加载的文件
设定系统启动时init进程把系统设置成什么样的runlevel运行
级别及加载相关的级别对应启动文件设置,
linux开机启动流程
1)开机BIOS 自检
2)MBR引导
3)grub 引导菜单
4)加载内核kernel
5)启动init进程 ps -ef|grep init
6)读取inittb文件,执行rc.sysinit.rc等脚本
/etc/inittab
/etc/rc.d/rc.sysinit
/etc/rc.d/rc3.d
7)启动mingetty,进入系统登录界面
3.8./etc/export
设定NFS网络文件系统用的配置文件。
3.9./etc/init.d
(yum、rpm安装的软件)启动命令的路径
/etc/init.d/sshd start === service sshd start
[[email protected] ~]# /etc/init.d/network
restart <==ONBOOT=yes
[[email protected] ~]# ifdown eth0 &&
ifup eth0 关闭和启动
3.10.变量路径
/etc/profile 全局环境变量路径
/etc/bashrc 全局环境变量路径
用户的环境变量路径:~/.bash_profile,~/.bashrc
3.11.登录显示目录
/etc/motd 登录后显示的字符串
/etc/profile.d 加载系统登录程序一个目录,放一个文件(内容为命令)
/etc/issue 登录信息
cat
-n /etc/issue
cat
/etc/redhat-release
3.12.系统文件相关目录
/etc/group #→设定用户的组名与相关信息※※※ chattr +i
/etc/passwd #→帐号信息文件 ※※※※※
/etc/shadow #→密码信息文件
/etc/gshadow #→组密码信息文件
/etc/sudoers 可以visudo命令的配置文件
3.13.rsyslog服务轮询下述文件
/var/log/messages系统日志,自动轮询按周 rsyslog
/var/log/secure安全日志,SSH连接日志
3.14.定时任务的配置文件
/var/spool/cron/root
[[email protected] ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate
time.nist.gov /dev/null 2>&1
You have new mail in
/var/spool/mail/root
[[email protected] ~]# cat
/var/spool/cron/root <===定时任务crond配置文件
*/5 * * * * /usr/sbin/ntpdate
time.nist.gov /dev/null 2>&1
其他目录
/var/spool/clientmquene 临时邮件文件目录
/proc/mounts设备的挂载信息,df -h类似
/proc/sys/net/ipv4 /etc/sysctl.conf的配置参数对应目录
/usr/local存放用户自编译软件的
/usr/src内核源代码存放位置
/etc/rsyslog.conf日志设置文件
四、重要目录及文件汇总一览表
目录 |
描述 |
|
/boot |
linux内核及系统引导程序所需的文件目录 |
|
/root |
超级用户家目录 |
|
/home |
普通用户家目录 |
|
/lost+founud |
意外关机或崩溃文件碎片所在的目录 |
|
/bin |
用户二进制命令目录 |
|
/sbin |
超级用户root二进制命令目录 |
|
/etc |
配置文件目录(系统配置及服务配置文件、启动命令的目录) |
|
子目录文件 |
/sysconfig/network-scripts/ifcfg-eth() |
网卡的配置文件 |
/resolv.conf |
客户端DNS的配置文件 |
|
/hosts |
设定用户Ip与域名的对应解析表,相当于本地LAN局域网内的DNS |
|
/sysconfig/network |
设置主机名网关的配置等配置文件 |
|
/fstab |
设置开机启动自动挂载磁盘的文件 |
|
/rc.local |
用于存放开机自启动程序命令的文件 |
|
/inittab |
系统开机启动要加载的文件 |
|
/export |
设定NFS网络文件系统用的配置文件 |
|
/init.d |
(yum、rpm安装的软件)启动命令的路径 |
|
/profile |
全局环境变量路径 |
|
/bashrc |
全局环境变量路径 |
|
/motd |
登录后显示的字符串 |
|
/profile.d |
加载系统登录程序一个目录,放一个文件(内容为命令) |
|
/issue |
认证前的登录信息,默认输出版本内核信息 |
|
/visudoes |
可以Visudo的配置文件 |
|
/passwd |
账号的相关信息文件 |
|
/shadow |
账号密码信息文件 |
|
/group |
用户组的相关信息文件 |
|
/gshadow |
组密码信息文件 |
|
/rsyslog.conf |
日志文件的设置 |
|
/var |
可变化的目录存放系统日志信息 |
|
子目录文件 |
/log/messages |
系统日志,自动轮询按周 rsyslog |
/log/secure |
安全日志,SSH连接日志 |
|
/spool/cron/root |
定时任务配置文件 |
|
/spool/clientmquene |
临时邮件文件目录 |
|
/proc |
进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。 |
|
子目录文件 |
/meminfo |
内存信息文件 |
/cpuinfo |
Cpu信息文件 |
|
/loadavg |
负载(系统繁忙程度) |
|
/mount |
挂载信息文件 |
|
//sys/net/ipv4/ip_forward |
对应/etc/sysctl.conf的配置参数路径 |
|
/dev |
设备文件目录 |
|
/mnt |
临时挂载点 |
|
/lib |
库文件目录 |
|
/usr |
用户安装的程序,系统程序的目录 |
|
子目录 |
/local |
存放用户自编译软件的位置 |
/src |
内核源代码存放位置 |
|
/tmp |
临时的系统目录 |
|
/opt |
可选的目录,用户安装程序的目录,厂商的目录 |
目录总结参考:
http://yangrong.blog.51cto.com/6945369/1288072
有关sys目录参考:
http://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/