3.4.3 精简开机系统自启动
您可以在百度里搜索“跟老男孩学Linux运维:Web集群实战 艾草文学(www.321553.xyz)”查找最新章节!
3.4.3 精简开机系统自启动
与Windows系统一样,在Linux服务器运行的过程中,也会有很多无用的软件服务默认运行,这些服务占用了很多系统资源,而且也带来了安全隐患,因此要关闭。那么,企业生产场景的Linux主机到底需要保留哪些开机自启动的服务呢?
1.重要的开机自启动服务
根据老男孩多年的经验,企业环境新装Linux系统之后有必要保留的开机自启动服务有5个,具体如下。
·sshd:远程连接Linux服务器时需要用到这个服务程序,所以必须要开启,否则Linux服务器就无法提供远程连接服务了。
·rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中,在CentOS6以前此服务的名字为syslog。
·network:系统启动时,若想激活/关闭各个网络接口,则应(必须)考虑开启此服务。
·crond:该服务用于周期性地执行系统及用户配置的任务计划。有要周期性执行的任务时,就要开启,此服务几乎是生产场景必须要用的一个软件。
·sysstat:sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据很有帮助,比如CPU使用率、硬盘和网络吞吐数据等,对这些数据的收集和分析,有利于判断系统运行是否正常,所以它是提高系统运行效率、安全运行服务器的得力助手。
sysstat软件包集成的主要工具为:
·iostat工具提供CPU使用率及硬盘吞吐效率的数据。
·mpstat工具提供与单个或多个处理器相关的数据。
·sar工具负责收集、报告并存储系统活跃的信息。
提示:上述5个服务是安装完系统后建议保留的开机自启动服务,也几乎是一切生产服务器必须保留的开机自启动服务。将来还可以根据服务器的业务使用场景调整相应的自启动服务。
2.设置开机自启动服务的常见方法
1)执行命令,然后手动选择处理的方法
方法1:执行ntsysv命令,然后在弹出的窗口中进行设置。
方法2:执行setup命令→system service,然后在弹出的窗口中进行设置。
提示:初学者可以选择上述两种方法中的一种来完成设置。
2)通过一行命令或Shell脚本进行设置
若你是有一定Linux经验的读者,可以进一步了解通过命令或脚本来一键完成设置的思路。
在快速设置前,先来查看默认情况下Linux系统开启的服务有哪些,由于我们工作在文本模式3级别,因此只需要查找3级别上开启的服务即可。查看命令如下:
[root@www ~]# LANG=en#先调整成英文字符集,以方便下面命令过滤中文字符串 [root@www ~]#chkconfig --list|grep 3:on abrt-ccpp 0:off 1:off 2:off 3:on 4:off5:on 6:off abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:offblk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off cpuspeed0:off 1:on 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on4:on 5:on 6:off <==这是要保留的 haldaemon 0:off 1:off 2:off 3:on 4:on5:on 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:off3:on 4:on 5:on 6:off kdump 0:off 1:off 2:off 3:on 4:on 5:on 6:offlvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off1:off 2:on 3:on 4:on 5:on 6:off messagebus 0:off 1:off 2:on 3:on4:on 5:on 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:offnetwork 0:off 1:off 2:on 3:on 4:on 5:on 6:off <==这是要保留的 postfix0:off 1:off 2:on 3:on 4:on 5:on 6:off rsyslog 0:off 1:off 2:on 3:on4:on 5:on 6:off <==这是要保留的 sshd 0:off 1:off 2:on 3:on 4:on 5:on6:off <==这是要保留的 sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off<==这是要保留的 udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
提示:可以看到,默认情况下开启了很多服务,我们需要保留开启的所有服务也包含在其中。这里只需要关注3级别上的设置是否为on即可(on为开启状态),有关运行级别的知识,请同学们查阅相关资料或参考老男孩的其他文章。
了解了系统在3级别上开启的服务后,就可以通过命令快速实现配置了,下面就正式介绍几种通过命令或脚本设置开机自启动的方法。
第一种快速处理方法:先全关闭,再开启需要保留的。
操作思路:先将3级别文本模式下默认开启的服务都关闭,然后开启需要开启的服务。
操作命令如下:
LANG=en for oldboy in `chkconfig --list|grep 3:on|awk '{print$1}'`;do chkconfig --level 3 $oldboy off;done for oldboy in crondnetwork rsyslog sshd sysstat ;do chkconfig --level 3 $oldboyon;done chkconfig --list|grep 3:on
操作过程如下:
[root@www ~]# LANG=en #<==临时调整字符集为英文 [root@www ~]# for oldboyin `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig--level 3 $oldboy off;done #<==关掉所有开启的服务 [root@www ~]# foroldboy in crond network rsyslog sshd sysstat ;do chkconfig --level3 $oldboy on;done <==开启需要开启的服务 [root@www ~]# chkconfig--list|grep 3:on <==查看设置结果 crond 0:off 1:off 2:on 3:on 4:on 5:on6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off rsyslog 0:off1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on5:on 6:off sysstat 0:off 1:off 2:off 3:on 4:off 5:off 6:off
第二种快速处理方法:一条命令搞定,Shell循环实现。
操作思路:默认情况下开机需要保留的服务都已经是开启状态了,因此,只需把3级别文本模式下已开启但又不需要的服务都关掉就好了。
操作过程如下:
[root@www ~]# for oldboy in `chkconfig --list|grep "3:on"|awk'{print $1}'|grep -vE "crond|network|sshd|rsyslog|sysstat"`;dochkconfig $oldboy off;done [root@www ~]# chkconfig --list|grep 3:oncrond 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off2:on 3:on 4:on 5:on 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off1:off 2:off 3:on 4:off 5:off 6:off
第三种快速处理方法:不要Shell循环语句也一条命令搞定。
操作思路:默认情况下开机需要保留的服务都已经是开启状态了,因此,只需把3级别文本模式下已开启但又不需要开启的服务都关掉就好了,这里将不用循环结构而是利用命令拼出所有要处理的命令字符串,然后通过bash将其当作命令执行。
操作命令如下:
chkconfig --list|grep 3:on|grep -vE"crond|sshd|network|rsyslog|sysstat" |awk '{print "chkconfig " $1 "off"}'|bash
操作过程为先拼接所有要操作的命令字符串,命令如下:
[root@www ~]# chkconfig --list|grep 3:on|grep -vE"crond|sshd|network| rsyslog|sysstat" |awk '{print "chkconfig " $1" off"}' chkconfig abrt-ccpp off chkconfig abrtd off chkconfigacpid off chkconfig atd off chkconfig auditd off chkconfigblk-availability off chkconfig cpuspeed off chkconfig haldaemon offchkconfig htcacheclean off chkconfig sysstat off
然后将拼接的所有要操作的命令字符串通过bash运行,如下:
[root@www ~]#chkconfig --list|grep 3:on|grep -vE"crond|sshd|network| rsyslog|sysstat" |awk '{print "chkconfig " $1" off"}'|bash
用下面的命令也可:
[root@www ~]# chkconfig --list|grep 3:on|grep -vE"crond|sshd|network| rsyslog|sysstat" |awk '{print $1}'|sed -r's#(.*)#chkconfig 1 off#g'|bash
提示:有很多朋友经常问老男孩,到底将哪些服务作为开机自启动服务合适?其实这个问题没有唯一的正确答案,只要不影响系统及服务的运行,多开点少开点都是可以的。但作为一名优秀的Linux系统管理员,我们应该遵守这样一个原则——最小化原则。就是尽量不安装不使用的软件,尽量不开启不需要开启的服务。即只要不用就不开启,这样系统的性能和安全性才是最好的。若随着业务的运行,因安装了软件而需要开机自启动就设置为开机启动即可。一句话,要清楚每个服务的角色,不用的绝对不安装,默认安装了的绝不开机自启动。 跟老男孩学Linux运维:Web集群实战