l9.Linux目录文件与系统启动知识(一)

775 阅读32分钟

“ 本文正在参加「金石计划 . 瓜分6万现金大奖」 ”

6.1 Linux系统目录结构介绍

6.1.1 Linux与Windows目录结构对比

相信很多读者已经熟悉了Linux的目录结构,图6-1可以进一步帮助读者对比Windows与Linux这两个系统的结构,不太了解Linux系统目录结构的读者,通过图6-1也可快速理解。

Windows的目录形式为c:\windows\,路径分隔符是“\”(撬棍,反斜线),D、E等盘的目录结构与之类似。Linux的目录形式为/etc/hosts,路径分隔符为“/”(斜线),Linux系统的一切目录都是从“/”根开始的。

6.1.2 Linux系统目录结构的基本特点

相较于Windows下的目录结构,可能会有读者在初次接触Linux的时候,觉得Linux的目录结构比较复杂,不像Windows视窗那样简单明了,从而感到迷茫。

其实,Linux系统的目录结构同样也很简单的,只是Linux系统的应用场景多为服务器应用且为字符界面应用,所以不像Windows系统视窗那样直观。但是,Linux系统的目录结构是很有规律的,图6-2所示的是Linux的目录结构最形象的比喻。

t6-1.png

图6-1 Linux与Windows目录结构对比

从图6-2中可以看出,Linux系统的目录结构具有如下基本特点。

t6-2.png

图6-2 Linux系统目录结构的特点

一切从“根”开始,“/”是所有目录的起点(顶点)。

Linux根下面的目录是一个有层次的树状结构。

酷似一颗倒挂着的树。

除此之外,Windows系统目录与磁盘是强对应的,联系很紧密,例如,C盘下的目录文件不可能与D盘下的目录有关联或者交集。而Linux系统目录则与此不同,Linux系统的目录与磁盘等设备是不直接关联的,每个目录都可以关联(官称:挂载)在不同的设备(例如磁盘)上,例如,看似有包含关系的几个目录/、/etc、/boot、/var很可能是分布在不同的分区或磁盘上。

在逻辑上,所有的目录(包括目录下的子目录)都在最高级别的目录“/”下,根(“/”)目录是所有目录的起始点(顶点),而实际上访问目录/、/etc、/boot、/var时,可能是在访问完全不同的分歧和磁盘,图6-3所示的是Linux目录结构和设备挂载的关系图。

Linux下面的设备(磁盘),如果不挂载,则是看不到入口的,就像没窗没门的监狱一样,是不能被正常使用的,如果要访问设备,就必须为设备开一个入口,这个入口就是挂载点,挂载点实质就是一个目录,开入口的过程,就是将挂载点与磁盘设备相关联,即挂载。

t6-3.png

图6-3 Linux中磁盘分歧与目录的关系

6.1.3 Linux目录结构的特点小结

  • Linux系统的所有目录都是一个有层次的倒立着的树状目录结构(倒挂树形结构),“/”根是所有目录的顶点,对于Linux的目录来说,一切从根开始。

  • 不同目录下的数据可以跨越不同的磁盘分区或不同的磁盘设备,设备可以随意挂载到任意目录上使用。

  • 所有的目录都是按照一定的类别有规律地进行组织和命名的。

  • 没有挂载到目录上的磁盘,相当于没有门和窗户的监狱,不能被使用。磁盘等设备需要挂载后才能正常使用。

  • 挂载点是磁盘访问的入口,是一个目录。

  • 相对路径与绝对路径具有如下关系:绝对路径是指以根为起始点的路径,例如/tmp、/opt;相对路径是指相对于非“/”路径的路径,即路径开头没有“/”斜线,例如etc/sysconfig、opt/tmp等,是相对于当前路径(执行pwd可查看)的路径。

    提示: 学习思路为“练习自己归纳总结的能力,把书由厚读薄”。

    通过光驱挂载,说明磁盘挂载的概念

[root@centos7 ~]# lsblk #查看设备
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  256M  0 part /boot
├─sda2   8:2    0  768M  0 part [SWAP]
└─sda3   8:3    0   19G  0 part /
sr0     11:0    1  4.3G  0 rom  #光驱是sr0
[root@centos7 ~]# ls /dev/sr0
/dev/sr0
[root@centos7 ~]# cd /dev/sr0
-bash: cd: /dev/sr0: Not a directory    #没有挂载是不能访问的
[root@centos7 ~]# mount /dev/sr0 /mnt   #挂载光驱/dev/sr0设备到/mnt目录(挂载点)
mount: /dev/sr0 is write-protected, mounting read-only
[root@centos7 ~]# df -h #查看挂载信息、设备使用率
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        900M     0  900M   0% /dev
tmpfs           910M     0  910M   0% /dev/shm
tmpfs           910M  9.6M  901M   2% /run
tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda3        19G  2.0G   18G  11% /
/dev/sda1       253M  157M   97M  62% /boot
tmpfs           182M     0  182M   0% /run/user/0
/dev/sr0        4.3G  4.3G     0 100% /mnt  #光驱已经被挂载
[root@centos7 ~]# cd /mnt
[root@centos7 /mnt]#ls
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos7 /mnt]# cd ..  #退出挂载目录,才可以取消挂载
[root@centos7 /]# umount /mnt       #取消光驱挂载
[root@centos7 /]# ls /mnt   #取消挂载后/mnt目录里没有文件里。

6.2 Unix系统目录结构的历史典故

了解目录结构的历史典故,目的是让大家能够清晰地了解并记忆Linux的目录结构。在学习Linux时,为知识赋予一个有意义的故事,是减慢忘记的好方法。

1969年,Ken Thompson和Dennis Ritchie在小型机PDP-7上发明了Unix。1971年,他们将主机升级到了PDP-11,PDP主机如图6-4所示。

t6-4.png

图6-4 PDP主机

当时,他们使用了一种称为RK05的存储盘,盘的容量大约是1.5MB,如图6-5所示。

t6-5.png

图6-5 1.5MB RK05硬盘和马路上的下水道井盖大小对比

由于硬盘的容量很小,操作系统存储盘存放的数据(根目录)却越来越大,因此没过多久一块盘就已经装不下数据了。于是,技术人员加上了第二块盘RK05,并且做了规定,第一块盘专门用来存放系统相关的程序,第二块盘专门用来存放用户自己的程序,因此,后者挂载点的目录取名为/usr。也就是说,根目录“/”挂载在第一块盘上,“/usr”目录挂载在第二块盘上。除此之外,两块盘里面的其他目录结构是完全相同的,例如:第一块盘的目录(/bin、/sbin、/lib、/tmp...)都会在/usr目录下重新出现一次,下面列出实际目录重复的情况:

[root@centos7 ~]# ls -ld /bin /lib /sbin /tmp
lrwxrwxrwx.  1 root root   7 Oct  1 14:39 /bin -> usr/bin
lrwxrwxrwx.  1 root root   7 Oct  1 14:39 /lib -> usr/lib
lrwxrwxrwx.  1 root root   8 Oct  1 14:39 /sbin -> usr/sbin
drwxrwxrwt. 11 root root 166 Oct  7 12:52 /tmp
[root@centos7 ~]# ls -ld /usr/bin /usr/lib /usr/sbin /usr/tmp
dr-xr-xr-x.  2 root root 28672 Oct  6 20:12 /usr/bin
dr-xr-xr-x. 29 root root  4096 Oct  1 16:09 /usr/lib
dr-xr-xr-x.  2 root root 12288 Oct  1 16:17 /usr/sbin
lrwxrwxrwx.  1 root root    10 Oct  1 14:39 /usr/tmp -> ../var/tmp

不久之后,第二块存储盘也满了,然后只好又加了第三块盘RK05,挂载点的目录取名为/home,并且做了规定,/home用于存储用户的数据。

目录结构的起名和定义就如此延续,具体见表6-1.随着设备的发展,磁盘的容量越来越大,各个目录的含义也进一步得到了明确。

表6-1 Linux系统诞生之初的目录及其作用表

b6-1.png

6.3 Linux的目录结构详解

6.3.1 目录层次标准(FHS)

FHS的全称为Filesystem Hierarchy Standard,中午意思目录层次标准,是Linux的目录规范标准。详情参见www.pathname.com/fhs

FHS定义了两层规范,具体如下。

第一层是“/”目录下的各个目录应该存放什么样的文件数据,例如,/etc目录下放置的是系统的配置文件(比如,/etc/exports、/etc/hosts等),而/bin和/sbin下存放的则是程序及系统命令。

第二层是针对/usr(unix software resource或secondary hierarchy)和/var(variable data)这两个目录的子目录来定义。例如,/var/log下放置的是系统日志文件等。

参考资料

http://www.pathname.com/fhs
http://www.ibm.com/developerworks/linux/library/l-proc/index.html

6.3.2 根目录结构详解

对于每一个Linux初学者来说,花费时间掌握Linux系统的目录结构知识是很有必要的。

当使用Linux系统的时候,如果执行“ls -l”明了就会发现,在“/”下面包含了很多目录内容,比如etc、usr、var、bin等,而在这些目录里面,还会有更多的目录或文件,它们构成了一个树状的结构。

Linux系统目录结构的最顶端是“/”,称其为根目录,根(/)目录是Linux系统所有目录的起始点,所有目录、文件、设备都在“/”之下,根(/)目录下的目录是一个树状结构,可以这么说,"/"就是Linux文件系统的组织者、领导者,通过tree命令,可以查看Linux的一级目录结构。示例代码如下:

[root@centos7 /]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
​
19 directories, 0 files

为了便于大家学习,这里将这些常见的目录列成表格详细说明,具体见表6-2。

表6-2 根下的目录结构知识

b6-2.png

/bin目录

[root@centos7 ~]# ll /bin
lrwxrwxrwx. 1 root root 7 Oct  1 14:39 /bin -> usr/bin

/boot目录

[root@centos7 /]# ls /boot
config-3.10.0-1127.19.1.el7.x86_64
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-eddf689a11a54dd69bbca212cf511592.img
initramfs-3.10.0-1127.19.1.el7.x86_64.img
initramfs-3.10.0-1127.19.1.el7.x86_64kdump.img
initramfs-3.10.0-957.el7.x86_64.img
initramfs-3.10.0-957.el7.x86_64kdump.img
symvers-3.10.0-1127.19.1.el7.x86_64.gz
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-1127.19.1.el7.x86_64
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-eddf689a11a54dd69bbca212cf511592
vmlinuz-3.10.0-1127.19.1.el7.x86_64
vmlinuz-3.10.0-957.el7.x86_64

/dev目录

[root@centos7 /]# ls /dev/
agpgart          log                 shm       tty26  tty50    usbmon2
autofs           loop-control        snapshot  tty27  tty51    vcs
block            mapper              snd       tty28  tty52    vcs1
bsg              mcelog              sr0       tty29  tty53    vcs2
btrfs-control    mem                 stderr    tty3   tty54    vcs3
bus              midi                stdin     tty30  tty55    vcs4
cdrom            mqueue              stdout    tty31  tty56    vcs5
char             net                 tty       tty32  tty57    vcs6
console          network_latency     tty0      tty33  tty58    vcsa
core             network_throughput  tty1      tty34  tty59    vcsa1
cpu              null                tty10     tty35  tty6     vcsa2
cpu_dma_latency  nvram               tty11     tty36  tty60    vcsa3
crash            oldmem              tty12     tty37  tty61    vcsa4
disk             port                tty13     tty38  tty62    vcsa5
dmmidi           ppp                 tty14     tty39  tty63    vcsa6
dri              ptmx                tty15     tty4   tty7     vfio
fb0              pts                 tty16     tty40  tty8     vga_arbiter
fd               random              tty17     tty41  tty9     vhci
full             raw                 tty18     tty42  ttyS0    vhost-net
fuse             rtc                 tty19     tty43  ttyS1    vmci
hidraw0          rtc0                tty2      tty44  ttyS2    vsock
hpet             sda                 tty20     tty45  ttyS3    zero
hugepages        sda1                tty21     tty46  uhid
hwrng            sda2                tty22     tty47  uinput
initctl          sda3                tty23     tty48  urandom
input            sg0                 tty24     tty49  usbmon0
kmsg             sg1                 tty25     tty5   usbmon1
​
[root@centos7 /]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3

/home目录

[root@centos7 /]# ls /home
oldboy

/root目录

[root@centos7 /]# ls /root
anaconda-ks.cfg  

/lib和/lib64

[root@centos7 ~]# ll /lib /lib64
lrwxrwxrwx. 1 root root 7 Oct  1 14:39 /lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct  1 14:39 /lib64 -> usr/lib64

/sbin目录

[root@centos7 ~]# ll /sbin
lrwxrwxrwx. 1 root root 8 Oct  1 14:39 /sbin -> usr/sbin
[root@centos7 ~]# ls /usr/sbin/
abrt-auto-reporting        lshw
abrt-configuration         lsmod
abrtd                      lsof
abrt-dbus                  lspci
abrt-harvest-pstoreoops    luseradd
abrt-harvest-vmcore        luserdel
abrt-install-ccpp-hook     lusermod
abrt-server                makedumpfile
accessdb                   matchpathcon
addgnupghome               mii-diag
addpart                    mii-tool
adduser                    mkdict
agetty                     mkdumprd
alternatives               mke2fs
anacron                    mkfs
applygnupgdefaults         mkfs.btrfs
arp                        mkfs.cramfs
arpd                       mkfs.ext2
arping                     mkfs.ext3
audispd                    mkfs.ext4
auditctl                   mkfs.minix
auditd                     mkfs.xfs
augenrules                 mkhomedir_helper
aureport                   mklost+found
ausearch                   mkswap
authconfig                 modinfo
authconfig-tui             modprobe
autrace                    mount.fuse
avcstat                    nameif
badblocks                  nethogs
biosdecode                 netreport
biosdevname                NetworkManager
blkdeactivate              new-kernel-pkg
blkdiscard                 newusers
blkid                      nl-class-add
blockdev                   nl-class-delete
bridge                     nl-classid-lookup
btrfs                      nl-class-list
btrfsck                    nl-cls-add
btrfs-convert              nl-cls-delete
btrfs-debug-tree           nl-cls-list
btrfs-find-root            nl-link-list
btrfs-image                nl-pktloc-lookup
btrfs-map-logical          nl-qdisc-add
btrfs-select-super         nl-qdisc-delete
btrfstune                  nl-qdisc-list
btrfs-zero-log             nologin
build-locale-archive       nstat
cacertdir_rehash           ownership
capsh                      packer
cbq                        pam_console_apply
cfdisk                     pam_tally2
chcpu                      pam_timestamp_check
chgpasswd                  parted
chkconfig                  partprobe
chpasswd                   partx
chroot                     pidof
clock                      ping6
clockdiff                  pivot_root
consoletype                plipconfig
cracklib-check             plymouthd
cracklib-format            plymouth-set-default-theme
cracklib-packer            postalias
cracklib-unpacker          postcat
create-cracklib-dict       postconf
crond                      postdrop
ctrlaltdel                 postfix
ctstat                     postkick
debugfs                    postlock
delpart                    postlog
depmod                     postmap
devlink                    postmulti
dhclient                   postqueue
dhclient-script            postsuper
dmfilemapd                 poweroff
dmidecode                  ppp-watch
dmsetup                    pwck
dmstats                    pwconv
dracut                     pwhistory_helper
dumpe2fs                   pwunconv
e2freefrag                 rdisc
e2fsck                     rdma
e2image                    readprofile
e2label                    reboot
e2undo                     resize2fs
e4defrag                   resizepart
eapol_test                 restorecon
ebtables                   rmmod
ebtables-restore           route
ebtables-save              routef
ether-wake                 routel
ethtool                    rsyslogd
faillock                   rtacct
fdformat                   rtcwake
fdisk                      rtmon
filefrag                   rtpr
findfs                     rtstat
firewalld                  runlevel
fixfiles                   runuser
fsck                       sasldblistusers2
fsck.btrfs                 saslpasswd2
fsck.cramfs                sefcontext_compile
fsck.ext2                  selabel_digest
fsck.ext3                  selabel_lookup
fsck.ext4                  selabel_lookup_best_match
fsck.minix                 selabel_partial_match
fsck.xfs                   selinuxconlist
fsfreeze                   selinuxdefcon
fstrim                     selinuxenabled
fuser                      selinuxexeccon
fxload                     selinux_restorecon
genhomedircon              semodule
genhostid                  sendmail
genl                       sendmail.postfix
genl-ctrl-list             service
getcap                     sestatus
getenforce                 setcap
getpcaps                   setenforce
getsebool                  setfiles
glibc_post_upgrade.x86_64  setpci
groupadd                   setsebool
groupdel                   sfdisk
groupmems                  shutdown
groupmod                   slattach
grpck                      sln
grpconv                    smtp-sink
grpunconv                  smtp-source
grub2-bios-setup           sosreport
grub2-get-kernel-settings  ss
grub2-install              sshd
grub2-macbless             sshd-keygen
grub2-mkconfig             sulogin
grub2-ofpathname           sushell
grub2-probe                swaplabel
grub2-reboot               swapoff
grub2-rpm-sort             swapon
grub2-set-default          switch_root
grub2-setpassword          sysctl
grub2-sparc64-setup        sys-unconfig
grubby                     tc
halt                       tcpdump
hardlink                   tcpslice
hwclock                    tcsd
iconvconfig                telinit
iconvconfig.x86_64         tracepath
ifcfg                      tracepath6
ifconfig                   tune2fs
ifdown                     tuned
ifenslave                  tuned-adm
ifstat                     udevadm
iftop                      unix_chkpwd
ifup                       unix_update
init                       update-alternatives
insmod                     update-pciids
install-info               useradd
installkernel              userdel
intel-microcode2ucode      usermod
iotop                      usernetctl
ip                         vigr
ip6tables                  vipw
ip6tables-restore          virt-what
ip6tables-save             visudo
ipmaddr                    vmcore-dmesg
iprconfig                  vpddecode
iprdbg                     weak-modules
iprdump                    wipefs
iprinit                    wpa_cli
iprsos                     wpa_passphrase
iprupdate                  wpa_supplicant
ipset                      xfs_admin
iptables                   xfs_bmap
iptables-restore           xfs_copy
iptables-save              xfs_db
iptunnel                   xfs_estimate
irqbalance                 xfs_freeze
kexec                      xfs_fsr
killall5                   xfs_growfs
kpartx                     xfs_info
lchage                     xfs_io
ldattach                   xfs_logprint
ldconfig                   xfs_mdrestore
lgroupadd                  xfs_metadump
lgroupdel                  xfs_mkfile
lgroupmod                  xfs_ncheck
lid                        xfs_quota
lnewusers                  xfs_repair
lnstat                     xfs_rtcp
load_policy                xtables-multi
logrotate                  zdump
logsave                    zic
losetup                    zramctl
lpasswd
​
[root@centos7 /]#su - oldboy
[oldboy@centos7 ~]$reboot
User root is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.
[oldboy@centos7 ~]$logout
#sbin目录下的文件,只有root才能执行。

6.4 重要的Linux系统文件介绍

前面讲解的是根下一级目录的作用,在实际工作中,更重要的是一些具体的目录。这些都是Linux运维人员必须要熟记的。

6.4.1 /etc系统初始化及设置相关重要文件

6.4.1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 :网卡配置文件

这是Linux系统第一块网卡的配置文件所在路径,其中第一块网卡配置文件的结尾标识为eth0,第二块为eth1,以此类推。

当通过执行命令nmtui(CentOS 6为setup)来修改网卡配置时,实际上就是在修改这个/etc/sysconfig/network-scripts/ifcfg-eth0 文件,因此也可以通过直接编辑该文件的方式实现对网卡配置的更高(如图6-6所示)。

配置完网卡之后,可以通过重启网络服务(systemctl restart network)来使得所有网卡的配置文件生效,如果只需让某个单独的eth0网卡配置生效,则可以通过命令ifdown eth0 && ifup eth0(停掉及启动eth0网卡命令)来实现。

下面是网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容详解:

[root@centos7 ~]# ll /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 357 Oct  2 16:12 /etc/sysconfig/network-scripts/ifcfg-eth0
​
[root@centos7 /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet   #上网类型,目前基本都是以太网。
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none  #启动协议,获取配置方式,有none|bootp|dhcp三个选项。
DEFROUTE=yes    #使用默认路由。
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0   #第一块网卡的逻辑设备名,第二块为eth1。
#UUID=33457492-ae7a-47d9-ae56-b209a615ad6a  #通用唯一识别码(Universally Unique Identifier),如果是VMware克隆的虚拟机,则会无法启动网卡,可以去除此项。
DEVICE=eth0 #第一块网卡的逻辑设备名,第二块为eth1。
ONBOOT=yes  #这个地方要为yes,才能保证下次开机启动时激活网卡设备。
IPADDR=10.0.0.201   #这是固定IP地址。
PREFIX=24   #子网掩码位数,这里是24位。
GATEWAY=10.0.0.254  #局域网上网网关地址。
IPV6_PRIVACY=no
DNS1=223.5.5.5  #主DNS,这里默认会覆盖以及优先于/etc/resolv.conf的配置生效。

提示: 更多网卡配置相关的知识请执行less /usr/share/doc/initscripts-*/sysconfig.txt查看

t6-6.png

图6-6 nmtui命令配置网卡时的配置文件

6.4.1.2 /etc/resolv.conf:Linux系统DNS客户端配置文件

DNS(Domain Name System)在网站的运行中起到了至关重要的作用,其主要复杂将网站域名解析为对应的IP地址,例如,将www.etiantian.org解析为对应的IP地址记录(如1.1.1.1),这个从域名到IP地址的解析过程,称作A记录,即Address Record。

DNS除了负责解析这个最重要的A记录之外,还有很多其他的功能呢!具体列举如下。

  • 设置CNAME别名记录,这个别名解析功能常被CDN加速服务商应用。

  • 设置MX邮件记录,这个MX记录功能,在购买或搭建邮件服务时会用到。

  • 设置PTR记录,反向解析,即将IP地址解析为对应的域名,与A记录的解析相反,邮件服务等业务中会用到。

    更多的DNS功能,请参阅其他图书或者老男孩的高级架构师课程内容。

    DNS分为服务端和客户端两个部分,本文讲解的是系统上网客户端层面的配置,可通过修改/etc/resolv.conf配置DNS客户端。

    常见的公用DNS为:223.5..5.5/223.6.6.6/114.114.114.114/114.114.115.115(通过斜线分割)。

    配置/etc/resolv.conf方法包含如下两种。

    第一种是通过图形界面进行配置,在图6-7中以此选择nmtui-->“Edit a connection”-->"DNS servers",完成配置。

t6-7.png

图6-7 图形界面修改DNS客户端设置图

上述设置实际上是同时修改/etc/sysconfig/network-scripts/ifcfg-eth0和/etc/resolv.conf文件。第二种方法是直接编辑/etc/resolv.conf文件,文件的内容如下:

[root@centos7 /]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5

需要特别注意的是,在网卡配置文件里配置DNS会覆盖/etc/resolv.conf里的DNS,因此,在新版系统(CentOS 6和CentOS 7)中,一般只配置网卡配置文件的DNS,这种方法也是笔者推荐的配置方法,如果不想在网卡配置里进行配置,则可以选择在/etc/resolv.conf里进行配置,这个配置文件的功能已经变弱了,详细配置情况可以进行man resolv.conf获取细节说明。

6.4.1.3 /etc/hostname:主机名配置文件

/etc/hostname为CentOS 7系统主机名的永久配置文件(CentOS 6以前为/etc/sysconfig/network)。修改主机名可采用如下两种方法。

方法1:临时修改法(CentOS 7和CentOS 6)

[root@centos7 ~]# cat /etc/hostname 
centos7
[root@centos7 ~]# hostname centos7.8    #临时生效。
[root@centos7 ~]# cat /etc/hostname #主机名的配置文件内容没变。
centos7
[root@centos7 ~]# logout    #可以按快捷键(Ctrl+d),退出当前环境。
[root@centos7.8 ~]# reboot
...
[root@centos7 ~]#
#退出登录临时生效,重启后就不生效了。

要想方法1永久生效,需要编辑/etc/hostname进行修改。(CentOS 7)

[root@centos7 ~]# cat /etc/hostname
centos7
[root@centos7 ~]# sed -i 's/centos7/centos7.8/' /etc/hostname   #或者vim /etc/hostname,进行修改。
[root@centos7 ~]# cat /etc/hostname
root@centos7.8
[root@centos7 ~]# logout    #可以按快捷键(Ctrl+d),退出当前环境。
[root@centos7 ~]# reboot
...
[root@centos7.8 ~]# 
#修改配置文件,退出重新登录不生效,必须要重启才能生效。

要想方法1永久生效,需要编辑/etc/sysconfig/network进行修改。(CentOS 6)

[root@centos6 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6
[root@centos6 ~]# sed -i.bak  's/HOSTNAME=centos6/HOSTNAME=centos6.10/' /etc/sysconfig/network  #或者vim /etc/sysconfig/network,进行修改。
[root@centos6 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6.10
[root@centos6 ~]# logout        #可以按快捷键(Ctrl+d),退出当前环境。
[root@centos6 ~]#   #依然不生效。
[root@centos6 ~]# reboot
...
[root@centos6.10 ~]#
#修改配置文件,退出重新登录不生效,必须要重启才能生效。

方法2:永久修改法(CentOS 7)

[root@centos7.8 ~]# hostnamectl set-hostname centos7
[root@centos7.8 ~]# cat /etc/hostname
centos7 #主机名的配置文件内容随之改变。
[root@centos7.8 ~]# logout  #可以按快捷键(Ctrl+d),退出当前环境。
[root@centos7 ~]#
#退出重新登录生效,建议使用此方法,不用重启就能生效。

提示: 要想立即生效,需要退出当前链接重新登录,此外,还可以通过nmtui命令(CentOS 7)命令来修改主机名。

d6-1.png

CentOS6 使用setup命令来修改主机名

d6-2.png

6.4.1.4 /etc/hosts:系统本地的DNS解析文件

/etc/hosts的作用是设定用户IP与名字(或域名)的对应解析表,相当于本地(局域网内)的DNS解析文件。

Linux系统下的这个/etc/hosts类似于c:\Windows\System32\drivers\etc\hosts文件,一般在企业里进行开发或测试工作时会使用hosts域名解析。在企业服务器的Linux环境下,hosts的解析在机房服务器的互相调用中也很常用。下面给出

一个门户网站阿里巴巴的解析的真实案例,通过该案例可以看到hosts文件在企业里的作用。

开发、产品、测试等人员将hosts文件用于已通过正式的域名测试但未上线的产品www.etiantian.org,示例如下:

hosts解析记录
192.168.2.7 www.etiantian.org

此外,在企业里,服务器之间的调用也可以通过域名(内部的DNS)来进行,这种方式可以方便运维人员独立进行服务器迁移,而不依赖于开发等人员。

主机名的命名必须专业,也就是说要反映出这条解析记录的明确用途,以下是/etc/hosts门户解析案例示例代码:

taobao:
172.38.18.23 realtime-search.config-vip.taobao.com
172.65.54.47 tpbk2configslave1.config-host.taobao.com
alibaba:
172.26.58.40 vafd.china.alibaba.com
172.23.54.47 normy1.vip.xyi.cn.alidc.net

当然,解析的记录数量太大,在hosts里修改就会比较麻烦,因此大公司还可能会有内部DNS服务,来管理大量主机名/域名和IP之间的解析记录。

本地系统也要使用hosts解析,示例代码如下:

[root@centos7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  #IPV4本地名称解析记录,十分重要。
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  #IPV6本地名称解析记录,十分重要。

提示: 企业中,集群服务器中每台服务器的主机名和自身IP都要在所有服务器的hosts里做对应解析。

例如,下面是笔者教学Web集群实战项目中的若干IP和主机名的对应记录,要配置在每一台服务器中的/etc/hosts里,具体代码如下:

[root@centos7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web02
172.16.1.8 web01
172.16.1.51 db01 db01.etiantian.org
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.61 m01
[root@centos7 /]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
​
​
[root@centos7 /]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 1.1.1.1
:wq
[root@centos7 /]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 1.1.1.1
[root@centos7 /]# systemctl restart network
[root@centos7 /]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
#/etc/resolv.conf配置DNS,再重启网卡后,就不生效。网卡配置文件里设置的DNS优先级高于/etc/resolv.conf里的设置,不建立在这里设置。

6.4.1.5 /etc/fstab:配置开机设备自动挂载的文件

/etc/fstab是一个重要的文件,其作用是配置开机设备自动挂载。前文已经讲解过了,Linux的设备必须要挂载才能使用,而刚开机时,磁盘都是没有挂载的,因此,系统开机会加载/etc/fstab文件,实现对系统分区的自动挂载,当然,管理员也可以利用这个文件实现对新增磁盘或分区的开机自动挂载功能。

/etc/fstab文件一般分为如下6列:

[root@centos7 ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Thu Oct  1 14:38:56 2020
#
# 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=b85ef6e0-09f0-4663-97eb-5ff5c41c73f7 /                       xfs     defaults        0 0
UUID=a4679b53-5ee6-4400-9561-8a7fa32db9c3 /boot                   xfs     defaults        0 0
UUID=97600707-8dbb-47fb-b675-8130662426b1 swap                    swap    defaults        0 0

上述代码段中6列内容的具体说明如下。

  • 第1列为设备的名称或者UUID或者磁盘标签,可以通过blkid查看设备UUID。

  • 第2列为设备的挂载点,即访问设备的入口。

  • 第3列为设备的文件系统类型。详细内容可通过man mount查看或参见后文。

  • 第4列为挂载的属性,详细内容可通过man mount查看或参见后文。

  • 第5列为是否进行备份。

  • 第6列为开机时是否做磁盘检查,0为不做检查,1、2为做检查。

    这个/etc/fstab文件在后文还好进行详解,读者也可以执行man fstab深入了解。

[root@centos7 /]# blkid #查看UUID
/dev/sda1: UUID="a4679b53-5ee6-4400-9561-8a7fa32db9c3" TYPE="xfs" 
/dev/sda2: UUID="97600707-8dbb-47fb-b675-8130662426b1" TYPE="swap" 
/dev/sda3: UUID="b85ef6e0-09f0-4663-97eb-5ff5c41c73f7" TYPE="xfs" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
​
[root@centos7 ~]# vim /etc/fstab    #添加光驱的到开机自动挂载设备文件
添加下面一行
UUID="2018-11-25-23-54-16-00" /media iso9660 defaults 0 0
:wq
[root@centos7 ~]# reboot
​
​
[root@centos7 ~]# ls /media/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        900M     0  900M   0% /dev
tmpfs           910M     0  910M   0% /dev/shm
tmpfs           910M  9.5M  901M   2% /run
tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda3        19G  2.0G   18G  11% /
/dev/sr0        4.3G  4.3G     0 100% /media
/dev/sda1       253M  157M   97M  62% /boot
tmpfs           182M     0  182M   0% /run/user/0
[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  256M  0 part /boot
├─sda2   8:2    0  768M  0 part [SWAP]
└─sda3   8:3    0   19G  0 part /
sr0     11:0    1  4.3G  0 rom  /media

6.4.1.6 /etc/rc.local:存放开机自启动程序命令的文件

/etc/rc.local是用于存放开机自启动程序命令的文件(CentOS 6里的chkconfig常用来管理yum/rpm安装的程序或服务的开机自启动,CentOS 7里则使用systemctl命令进行管理)。有时IT人员自己开发的程序需要开机启动,也会习惯性地将启动命令放入/etc/rc/local。Linux开机时会将/etc/rc.local里的内容全部执行一遍,这是Linux运维人员常用的文件。

特别提示:从CentOS 7开始,/etc/rc.local必须要先分配执行权限,里面的脚本才能执行,另外/etc/rc.local是一个软链接文件,它的真实文件所在地为/etc/rc.d/rc.local,因此在使用tar等工具备份的时候要严格注意。

[root@centos7 ~]# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 Oct  1 16:04 /etc/rc.local -> rc.d/rc.local
​
[root@centos7 ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local

6.4.1.7 /etc/inittab:系统启动时设定运行级别等配置的文件

/etc/inittab在早期(CentOS 6以前)是一个指导Linux开机启动的关键文件(CentOS 7已将该文件废弃),用于设定系统启动时init进程将系统设置成什么样的运行级别(runlevel),以及加载运行级别对应的启动文件。在CentOS 6里,其仅负责设定系统启动时init进程将系统设置成什么样的运行级别,其他的功能已分拆到其他文件里了。

简单地说,运行级别,就是Linux系统的不同状态,类似于人的单身、结婚、离婚等标识。从CentOS 6起,inittab文件里就仅剩下一个设定运行级别了。示例代码如下:

[root@centos6 ~]# ll /etc/inittab
-rw-r--r--. 1 root root 884 Jun 20  2018 /etc/inittab
[root@centos6 ~]# 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:   #系统启动时,将Linux设定固定的运行级别的配置行。

Linux系统运行级别的说明如下:

#   0  关机(请不要把系统运行级别设置为0)
#   1  单用户模式 (root用户密码忘记,可用此模式找回)  
#   2  没有NFS,多用户模式
#   3  命令行模式 文本模式(企业级服务器核心运行状态)          
#   4  未使用
#   5  图形化模式 桌面模式  X11(桌面个人版系统运行状态)
#   6  重启(不要把系统运行级别设置为6)

可以通过runlevel命令,查看当前系统的运行级别,示例代码如下:

[root@centos6 ~]# runlevel
N 3 #N为上一次的运行级别,3为当前的运行级别。
​
[root@centos6 ~]# who -r
         run-level 3  Oct 18 21:24

临时修改运行级别(立即生效)的示例代码如下:

[root@centos6 ~]# init 4    #将运行级别修改为4,测试(生产服务器不能随意测试)。
[root@centos6 ~]# runlevel
3 4
[root@centos6 ~]# init3
[root@centos6 ~]# runlevel
4 3

如果想要永久修改运行级别,则需要修改/etc/inittab文件最后一行的id:3:initdefault: 部分,其中数字部分就是对应的运行级别,需要重启系统使其生效。

下面是CentOS 6以前的inittab文件,其中不但包含运行级别配置,还包含加载系统初始化脚本、加载各自的运行级别对应脚本、禁止三键重启、加载不同级别的TTY以及桌面设置等的配置信息,具体如下:

d6-3.png

特别补充:上述讲解都是CentOS 7以前版本的系统,CentOS 7以后版本的变化很大,具体帮助就在/etc/inittab文件里,只不过内容是英文的,相关翻译及操作如下:

[root@centos7 ~]# cat /etc/inittab  #CentOS 7下的inittab内容说明
# inittab is no longer used when using systemd.
#当使用systemd方式启动时,inittab文件不再使用了。
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#在此文件中添加任何配置,都不起作用了。
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#本文件中的Ctrl-Alt-Delete 3键重启功能。
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#systemd启动方式使用targets,而不是runlevel,默认情况下有两个主要的targets。
# multi-user.target: analogous to runlevel 3    #多用户文本模式,3运行级别。
# graphical.target: analogous to runlevel 5 #图形模式,5运行级别。
#
# To view current default target, run:
# systemctl get-default
#若要查看当前的默认运行级别,则运行systemctl get-default命令。
# To set a default target, run:
# systemctl set-default TARGET.target
#若要设置一个默认的运行级别,则运行systemctl set-default TARGET.target命令。

CentOS7下运行级别文件

[root@centos7 ~]# ll /usr/lib/systemd/system | grep level |grep -v want
lrwxrwxrwx. 1 root root   15 Oct  1 16:04 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root   13 Oct  1 16:04 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root   17 Oct  1 16:04 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 Oct  1 16:04 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 Oct  1 16:04 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root   16 Oct  1 16:04 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root   13 Oct  1 16:04 runlevel6.target -> reboot.target
-rw-r--r--. 1 root root  761 Aug  7 01:30 systemd-update-utmp-runlevel.service

CentOS7下运行级别的设置

[root@centos7 ~]# systemctl get-default #查看默认运行级别
multi-user.target   
[root@centos7 ~]# systemctl set-default graphical.target #设置运行级别
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@centos7 ~]# systemctl get-default
graphical.target
​
[root@centos7 ~]# systemctl set-default multi-user.target   #生产环境,设置默认运行级别为multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@centos7 ~]# systemctl get-default
multi-user.target

6.4.1.8 /etc/profile和/etc/bashrc:配置系统的环境变量/别名等的文件

环境变量如PS1、TMOUT、HISTSIZE、HISTFILESIZE都可以存放在/etc/profile或/etc/bashrc这个文件中,并且全局生效。“/.bash_profile”及“/.bashrc”表示在当前用户中生效。

说明:“~”表示当前用户的家目录,以“.”开头的文件或目录是隐藏的,需要执行ls -a查看。

上述环境变量文件的生效顺序如图6-8所示,该图展示了登录Shell读取环境变量文件的流程。

t6-8.png

图6-8 环境变量文件生效顺序流程

6.4.1.9 /etc/profile.d:用户登录后执行的脚本所在的目录

/etc/profile.d为加载系统登录程序的目录,目录里面的程序以文件的形式存在(一般以“*.sh”为扩展名),但要可执行,示例代码如下:

[root@centos7 ~]# cat /etc/profile.d/oldboy.sh
echo "wellcome to Linux from /etc/profile.d"

/etc/profile.d是登录后执行的脚本所在地,在老男孩的《根老男孩学Linux运维:Shell编程实战》一书中,讲解跳板机项目时,就是通过加载 /etc/profile.d里面的脚本来登录的,登录后即出现跳板机的管理页面。

命令行提示符修改,可以写"*.sh",文件放到这里生效。

[root@centos7 ~]# echo 'PS1="[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m][\e[31;1m] \w[\e[0m]]\$ "' > /etc/profile.d/env.sh 
[root@centos7 ~]# . /etc/profile.d/env.sh 
[root@centos7 ~]# cat /etc/profile.d/env.sh 
PS1="[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m][\e[31;1m] \w[\e[0m]]\$ "

6.4.1.10 /etc/issue和/etc/issue.net:配置在用户登录终端前显示信息的文件

/etc/issue和/etc/issue.net文件的作用是将用户登录真实终端(接显示器)前的信息显示出来,如图6-9所示。

t6-9.png

图6-9 issue用户登录之前显示的信息

/etc/issue文件的内容展示如下:

[root@centos7 ~]# cat /etc/issue
\S
Kernel \r on an \m

在企业服务器中,为了防止泄露服务器版本,一般会将issue文件的内容清空。

[root@centos7 ~]# cp /etc/issue /etc/issue.net /tmp
[root@centos7 ~]# ls /tmp
data1  data3  issue.net                   vmware-root_964-2990547674
data2  issue  vmware-root_933-3988752732
#清空之前先备份一下文件
​
[root@centos7 ~]# >/etc/issue   
[root@centos7 ~]# >/etc/issue.net 

6.4.1.11 /etc/init.d:软件启动程序所在的目录(CentOS 7以前)

这个目录可用来存放通过yum或rpm工具安装的软件的默认启动程序(启动脚本)的目录。例如,sshd服务的/etc/init.d/sshd restart(相当于是service sshd restart),IT人员人为开发的软件服务启动程序也可以放置在这里,在CentOS 7中该目录也已经废弃不用了,统一由systemctl取代,例如,重启sshd服务的命令为systemctl restart sshd.service。

6.4.1.12 /etc/motd:配置用户登录系统之后显示提示内容的文件

/etc/motd文件配置的是用户登录系统之后显示的内容,相当于登录后的一个提示作用,默认是空的。示例代码如下:

[root@centos7 ~]# cat /etc/motd
[root@centos7 ~]# echo 'wellcome to Linux!' >>/etc/motd
[root@centos7 ~]# cat /etc/motd
wellcome to Linux!
[root@centos7 ~]# logout    #退出登录
Connection closing...Socket close.
​
Connection closed by foreign host.
​
Disconnected from remote host(老男孩58期-10.0.0.201) at 15:51:23.
​
Type `help' to learn how to use Xshell prompt.
[C:~]$     #连接已经断开
Reconnecting in 1 seconds. Press any key to exit local shell.
.
​
Connecting to 10.0.0.201:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
​
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Wed Oct  7 15:23:00 2020 from 10.0.0.1
Wellcome to Linux!  #这就是登录之后显示的信息。

6.4.1.13 /etc/redhat-release:声明Red Hat版本号和名称信息的文件

/etc/redhat-release是用于声明Red Hat版本号和名称信息的文件,如果需要查看系统的版本等信息,可以读取这个文件进行查看。示例代码如下:

[root@centos7 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

更加详细的查看系统的版本信息

[root@centos7 ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"[root@centos7 ~]# uname -r  #查看系统内核版本
3.10.0-1127.19.1.el7.x86_64

6.4.1.14 /etc/sysctl.conf:Linux内核参数设置文件

这是一个涉及Linux系统性能调优的极其重要的文件,作用是设置Linux内核系统,可用来替代系统默认运行的内核参数,让系统运行得更高效。管理员可以通过sysctl -a 命令查询可以设置的内核参数信息,修改sysctl.conf完毕后,执行sysctl -p使得修改的信息生效,这部分内容比较复杂,在后文Linux基础优化章节会进行深入阐述,读者可以执行man sysctl.conf命令查看该配置文件的相关帮助,设置相关参数后的运行情况可以通过读取/proc下的信息文件进行查看。CentOS 7下的内核配置,还可以通过不同的文件分类进行设置,示例代码如下:

[root@centos7 ~]# ll -d /etc/sysctl.d /usr/lib/sysctl.d/
drwxr-xr-x. 2 root root 28 Oct  1 16:04 /etc/sysctl.d
drwxr-xr-x. 2 root root 85 Oct  1 16:04 /usr/lib/sysctl.d/
​
[root@centos7 ~]# ll /usr/lib/sysctl.d/
total 12
-rw-r--r--. 1 root root  293 Apr  1  2020 00-system.conf
-rw-r--r--. 1 root root 1810 Apr  2  2020 10-default-yama-scope.conf
-rw-r--r--. 1 root root 1205 Aug  7 01:30 50-default.conf

CentOS 7下的/etc/sysctl.conf

[root@centos7 ~]# ll /etc/sysctl.conf 
-rw-r--r--. 1 root root 449 Apr  1  2020 /etc/sysctl.conf
[root@centos7 ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

CentOS 6下的/etc/sysctl.conf

[root@centos6 ~]# ll /etc/sysctl.conf 
-rw-r--r--. 1 root root 1057 May 12  2016 /etc/sysctl.conf
[root@centos6 ~]# cat /etc/sysctl.conf 
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
#
# Use '/sbin/sysctl -a' to list all possible parameters.# Controls IP packet forwarding
net.ipv4.ip_forward = 0# Controls source route verification
net.ipv4.conf.default.rp_filter = 1# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

6.4.1.15 /etc下重要目录文件的汇总小结

表6-3中的文件和目录,是初学者需要了解和掌握的知识。

表6-3 /etc下的重要目录列表

b6-3.png