041139411160服务咨询:工作日9:00 - 18:00

一条命令精简Linux的开机启动项

Linux

和Windows系统一样Linux的开机启动项中有很多对于生产环境是无用的,服务开启就必定占用系统资源,如果逐一关闭它们会带来一定的工作量,下面即将为大家分享一下只需要一条命令就可以解决而又显得高大上的方法。

首先使用“chkconfig –list|grep 3:on”命令来查看所有在init3模式下(即命令行模式)开机启动项:

# chkconfig --list|grep 3:on
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
...

这里介绍几个企业生产环境中必要的服务:

  • sshd:远程连接Linux服务器时需要用到的服务
  • rsyslog:系统的守护程序通常会使用rsyslog将各种信息记录到日志文件中
  • network:网络服务
  • crond:周期性执行任务计划需要该服务
  • sysstat:检测系统性能

只保留必要的开机启动项,其余全关闭,以上述五个服务为例:

第一种方法:
# chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|rsyslog|network|crond|sysstat"|sed -r 's#(.*)#chkconfig \1 off#g'|bash
第二种方法:
# chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|rsyslog|network|crond|sysstat"|awk '{print "chkconfig " $1 " off"}'|bash

执行完命令后再来查看下结果:

# chkconfig --list|grep 3:on
crond      0:off   1:off   2:on    3:on    4:on    5:on    6:off
network    0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog    0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat    0:off   1:on    2:on    3:on    4:on    5:on    6:off

以上正是我们期望的结果。

下面对整个命令进行分段解释:

  1. chkconfig –list|grep 3:on 查看开机启动项
  2. awk ‘{print $1}’ 用来列出开机启动项的第一列内容,也就是服务名称列
  3. grep -Ev “sshd|rsyslog|network|crond|sysstat” 用来排除crond、network、rsyslog、sshd、sysstat这五个服务,应注意服务之间紧跟“|”号,不能有空格。
  4. sed -r ‘s#(.*)#chkconfig \1 off#g’或awk ‘{print “chkconfig ” $1 ” off”}’ 在筛选出来的每个服务前后添加“chkconfig ”和“ off”形成“chkconfig xxxx off”格式
  5. bash bash是shell的一种,Linux上默认采用的是bash,上述处理过程的最后结果是形成“chkconfig xxxx off”,但这只是字符串,若想执行必须交给shell作为命令处理。

这两种方法是不是让你的工作变得简便有效,先保证最精简的启动项,然后有其他必要的服务我们再一点点添加。

lxfangs