“ 本文正在参加「金石计划 . 瓜分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的目录结构最形象的比喻。
图6-1 Linux与Windows目录结构对比
从图6-2中可以看出,Linux系统的目录结构具有如下基本特点。
图6-2 Linux系统目录结构的特点
一切从“根”开始,“/”是所有目录的起点(顶点)。
Linux根下面的目录是一个有层次的树状结构。
酷似一颗倒挂着的树。
除此之外,Windows系统目录与磁盘是强对应的,联系很紧密,例如,C盘下的目录文件不可能与D盘下的目录有关联或者交集。而Linux系统目录则与此不同,Linux系统的目录与磁盘等设备是不直接关联的,每个目录都可以关联(官称:挂载)在不同的设备(例如磁盘)上,例如,看似有包含关系的几个目录/、/etc、/boot、/var很可能是分布在不同的分区或磁盘上。
在逻辑上,所有的目录(包括目录下的子目录)都在最高级别的目录“/”下,根(“/”)目录是所有目录的起始点(顶点),而实际上访问目录/、/etc、/boot、/var时,可能是在访问完全不同的分歧和磁盘,图6-3所示的是Linux目录结构和设备挂载的关系图。
Linux下面的设备(磁盘),如果不挂载,则是看不到入口的,就像没窗没门的监狱一样,是不能被正常使用的,如果要访问设备,就必须为设备开一个入口,这个入口就是挂载点,挂载点实质就是一个目录,开入口的过程,就是将挂载点与磁盘设备相关联,即挂载。
图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所示。
图6-4 PDP主机
当时,他们使用了一种称为RK05的存储盘,盘的容量大约是1.5MB,如图6-5所示。
图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系统诞生之初的目录及其作用表
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 根下的目录结构知识
/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查看
图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",完成配置。
图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)命令来修改主机名。
CentOS6 使用setup命令来修改主机名
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以及桌面设置等的配置信息,具体如下:
特别补充:上述讲解都是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读取环境变量文件的流程。
图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所示。
图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下的重要目录列表