第九章 Linux目录结构
一、Linux一级目录结构
1、/bin常用二进制可执行命令for allusers
2、/dev设备特殊文件
/dev/null 是系统的空设备(也就是黑洞)
3、/etc系统管理和配置文件
/etc/init.d 启动命令
/etc/rc.d 启动的配置文件和脚本
/etc/motd 客户连接时显示的内容
echo "ABC's Linux, ip is 192.168.58.85" > /etc/motd
cat /etc/motd
ssh登录
Last login: Fri Jan 612:44:45 2017 from 192.168.18.239
ABC's Linux, ip is 192.168.58.85
4、/home普通用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
5、/lib标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
6、/sbin系统管理命令,这里存放的是系统管理员使用的管理程序
7、/tmp公用的临时文件存储点
8、/root系统管理员的主目录
9、/mnt系统提供这个目录是让用户临时挂载其他的文件系统。
10、/lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
11、/proc虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
cat /proc/meminfo 查看内存信息
cat /proc/cpuinfo 查看CPU信息
cat /proc/loadavg 查看系统负载
cat /proc/filesystems 查看文件系统信息
cat /proc/devices 查看运行内核所配置的所有设备清单
cat /proc/dma 查看正在使用的DMA通道
cat /proc/interrupts 查看正在使用的中断和曾经有多少个中断
cat /proc/ioports 查看正在使用的I/O端口
12、/var某些大文件的溢出区,比方说各种服务的日志文件
/var/log/messages 系统日志文件
/var/log/secure 系统安全日志文件
13、/usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放Xwindow的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
二、Linux重要子目录
1、/etc/sysconfig/network-scripts/: 网卡目录
cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0#网卡设备名称
ONBOOT=yes#启动时是否激活 yes | no
BOOTPROTO=static#协议类型 dhcp bootp none
IPADDR=192.168.1.90#网络IP地址
NETMASK=255.255.255.0#网络子网地址
GATEWAY=192.168.1.1#网关地址
BROADCAST=192.168.1.255#广播地址
HWADDR=00:0C:29:FE:1A:09#网卡MAC地址
TYPE=Ethernet#网卡类型为以太网
/etc/init.d/networkrestart : 重启所有网卡 (stop |reload)
ifdowneth0 && ifup eth0 : 重启eth0网卡
ifdowneth0 :关闭eth0网卡
ifupeth0 : 打开eth0网卡
2、/etc/resolv.conf: 本地客户端DNS文件
cat/etc/resolv.conf
#Generated by NetworkManager
domainopenstacklocal
searchopenstacklocal
nameserver192.168.90.161
nameserver192.168.58.2
3、/etc/hosts: 设定用户IP与名字(或域名)的对应解析表,相当于本地局域网的DNS文件
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomain localhost6localhost6.localdomain6
192.168.8.198 study.linux.rhel
192.1468.8.198 localhost
4、/etc/fstab: 记录启动时自动mount文件系统的文件
(1)查看/etc/fstab内容
cat /etc/fstab
/dev/mapper/vg_study-lv_root/ ext4 defaults 1 1
UUID=a05b6248-af32-49aa-bdf9-26b239b76e42/boot ext4 defaults 1 2
/dev/mapper/vg_study-lv_swapswap swap defaults 0 0
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
(2)/etc/fstab的格式
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec :该字段定义希望加载的文件系统所在的设备或远程文件系统。
fs_file :该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。描述文件系统的载入点,对于交换分区(swap),这个字段定义为none,如果在载入点的路径中包含空格符,可以用“\040”来替代空格符。
fs_type :定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等.
fs_options :指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。
参数:
ro:以只读模式加载该文件系统
sync:不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但降低速度
user:允许普通用户加载该文件系统
quota:强制在该文件系统上进行磁盘定额限制
noauto:不再使用mount -a命令(例如系统启动时)加载该文件系统
fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,0表示不备份,1表示备份。若不需要转储就设置该字段为0.文件系统频率(fs_freq),被dump程序使用来确定哪个文件系统需要dump,如果最后一个字段没有设置,系统将认为其值为0,而dump程序则认为此文件系统无需dump。
fs_pass- 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0.被fsck程序所使用来确定进行在系统重启进行文件系统检查时的顺序,对于根系统/这个值应设为1,其它文件系统可以设为2,在同一个物理硬盘内的文件系统应该被顺序检测,而不同硬盘中的文件系统则应该同时检测以充分利用系统的并行性。如果最后一个字段值为0或没有设置,fsck程序装跳过此文件系统的检测。在linux编程中可以用getmntent过程来访问这个文件的内容。
5、/etc/rc.local: 存放开机自启动程序命令的文件
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方
类似chkconfig,是在系统开机之后登录之前要运行的程序,chkconfig只能管理yum/rpm安装的程序的启动服务
Linux开机流程:
第一步:加载BIOS
BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等
第二步:读取MBR
硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,存放预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。复制的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
第三步:Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。初始化硬件设备、建立内存空间的映射图,为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
第四步:加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,
并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。
第五步:用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
第六步:init进程执行rc.sysinit
Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,
包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等
第七步:启动内核模块
依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
第八步:执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
第九步:执行/etc/rc.d/rc.local
第十步:执行/bin/login程序,进入登录状态
cat /etc/rc.local
#!/bin/sh
#
#This script will be executed *after* all the other init scripts.
#You can put your own initialization stuff in here if you don't
#want to do the full Sys V style init stuff.
touch/var/lock/subsys/local
serviceiptables stop
/etc/inittab : 设定系统启动时init进程将把系统设置成相应的runlevel及加载相关启动文件设置
cat /etc/inittab
#inittab is only used by upstart for the default runlevel.
#
#ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
#System initialization is started by /etc/init/rcS.conf
#
#Individual runlevels are started by /etc/init/rc.conf
#
#Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
#Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
#with configuration in /etc/sysconfig/init.
#
#For information on how to write upstart event handlers, or how
#upstart works, see init(5), init(8), and initctl(8).
#
#Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3,if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
6、/etc/exports: 设定NFS网络文件系统的配置文件
cat /etc/exports
7、/etc/init.d: 存放系统以System v模式启动的脚本
ll /etc/init.d
cd /etc/init.d
8、/etc/profile: 系统全局环境变量配置文件
cat /etc/profile
9、/etc/profile.d: 加载系统登录程序的目录,可以存放命令和文件
10、/etc/issue: 记录用户登录前显示的信息
11、/etc/motd客户连接时显示的内容
echo"ABC's Linux, ip is 192.168.58.85" > /etc/motd
cat/etc/motd
ssh登录
Lastlogin: Fri Jan 6 12:44:45 2017 from 192.168.18.239
ABC'sLinux, ip is 192.168.58.85
12、/etc/redhat-release: 显示系统版本(lsb_release-a)
cat/etc/redhat-release
CentOS release 6.5 (Final)
13、/etc/group: 用户的组名信息文件
cat/etc/group
14、/etc/gshadow: 组密码文件
cat/etc/gshadow
15、/etc/passwd: 用户名信息文件
cat/etc/passwd
16、/etc/shadow: 用户密码文件
cat /etc/shadow
useradd username这个命令会在/etc下的group、gshadow、passwd、shadow4个文件中加入相关内容
17、/etc/sudoers: sudo的配置文件
一般用visudo来设置/etc/sudoers,因为visudo检查语法,vi /etc/sudoers不检查语法
18、/etc/securetty: 设定哪些终端可以让root登录
19、/etc/login.defs: 所有用户登录时的缺省配置
20、/etc/modprobe.conf: 内核模块额外参数配置
21、/etc/rsyslog.conf: 日志设置文件(CentOS5.X版本为syslog.conf)
22、/usr/local: 用户自编译安装软件的存放目录,一般是通过源码安装。相当于c:\program files
23、/usr/src: 内核源码的存放目录
24、/var/log: 各种系统日志存放目录
25、/var/log/messages: 系统日志,按周循环
26、/var/log/secure: 存放系统登录信息(系统安全的日志文件)
27、/var/log/wtmp: 记录系统登陆者的信息文件。
last: 查看wtmp的内容(still logged in表示正在登录)
root pts/0 192.168.158.1 Sat Jan 7 12:06 still logged in
root pts/0 192.168.158.1 Sat Jan 7 11:10 - 12:06 (00:56)
reboot system boot 2.6.32-431.el6.i Sat Jan 7 11:09- 12:07 (00:57)
lastlog: 查看用户是否登录过
Username Port From Latest
root pts/0 192.168.158.1 Sat Jan 7 12:06:40 +0800 2017
bin **Never logged in**
daemon **Never logged in**
ftp **Never logged in**
28、/var/spool/cron/[Username] : 定时任务crontab默认路径。按用户名命名文件
/var/spool/cron/root
/var/spool/cron/oracle
crontab -l
29、/var/spool/clientmqueue: sendmail临时邮件文件目录,有时候该目录下有许多小文件,将磁盘空间或文件inode的占满
定时清理:
echo"/var/spool/clientmqueue/sendmail/ -type f | xargs rm -f" > 30、/server/scripts/del_sys_file.sh
echo "00 00 * * * /bin/sh/server/scripts/del_sys_file.sh > /del/null 2>&1" >>/var/spool/cron/root
30、/proc/version: 系统版本
cat /proc/version
31、/proc/sys/kernel: 系统内核所在的目录
cd /proc/sys/kernel
ll /proc/sys/kernel
修改文件/etc/sysctl.conf中的内容后,sysctl -p生效,实际上就是修改/proc目录下的相关文件
也可以直接修改/proc下的文件内容达到系统调优的目的,只是重启后失效。
可以将命令放在/etc/rc.local中达到长期有效的目的。
vi/etc/sysctl
net.ipv4.tcp_tw_reuse = 1
sysctl-p
等同于
echo1 > /proc/sys/net/ipv4/tcp_tw_reuse
virc.local
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse