CentOS设置服务开机启动的三种方法
利用chkconfig命令来配置启动级别
在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd、mysqld、postfix等,安装后系统默认不会自动启动的。就算 手动执行 /etc/init.d/mysqld start 启动了服务,只要服务器重启后,系统仍然不会自动启动服务。 在这个时候,我们就需要在安装后做个设置,让系统自动启动这些服务,避免不必要的损失和麻烦。 其实命令很简单的,使用chkconfig即可。
查询chkconfig当前所有服务
查询当前所有服务的自动启动配置可以使用chkconfig --list,如果要查询某一个指定的服务,可以跟上服务名即可,比如要查询sshd服务。
[root@localhost ~]# chkconfig --list NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off bluetooth 0:off 1:off 2:off 3:on 4:on 5:on 6:off certmonger 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 cups 0:off 1:off 2:on 3:on 4:on 5:on 6:off dnsmasq 0:off 1:off 2:off 3:off 4:off 5:off 6:off fcoe 0:off 1:off 2:on 3:on 4:on 5:on 6:off firstboot 0:off 1:off 2:off 3:off 4:off 5:off 6:off haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off ipsec 0:off 1:off 2:off 3:off 4:off 5:off 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off livesys 0:off 1:off 2:off 3:on 4:on 5:on 6:off livesys-late 0:off 1:off 2:off 3:on 4:on 5:on 6:off lldpad 0:off 1:off 2:on 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 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 multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:off 3:off 4:off 5:off 6:off nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off nscd 0:off 1:off 2:off 3:off 4:off 5:off 6:off nslcd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off oddjobd 0:off 1:off 2:off 3:off 4:off 5:off 6:off openct 0:off 1:off 2:on 3:on 4:on 5:on 6:off pcscd 0:off 1:off 2:off 3:on 4:on 5:on 6:off portreserve 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 psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcidmapd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off snmptrapd 0:off 1:off 2:off 3:off 4:off 5:off 6:off spice-vdagentd 0:off 1:off 2:off 3:off 4:off 5:on 6:off sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6: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 vboxadd 0:off 1:off 2:on 3:on 4:on 5:on 6:off vboxadd-service 0:off 1:off 2:on 3:on 4:on 5:on 6:off vboxadd-x11 0:off 1:off 2:off 3:on 4:off 5:on 6:off vncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off wdaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]# [root@localhost ~]# chkconfig --list sshd sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]#
添加服务到chkconfig列表
如果这个服务尚未被添加到 chkconfig 列表中,则现需要使用 –-add 参数将其添加进去:
chkconfig --add sshd
设置或取消服务的自动启动
如果需要设置服务的自动启动,可以通过chkconfig的on命令设置,比如设置sshd服务为自动启动:
[root@localhost ~]# chkconfig sshd on [root@localhost ~]# chkconfig --list sshd sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost ~]#
这个时候2~5都是on,就表明会自动启动了。如果需要取消服务的自动启动,可以通过chkconfig的off命令取消,比如取消sshd服务的自动启动:
[root@localhost ~]# chkconfig sshd off [root@localhost ~]# chkconfig --list sshd sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]#
修改 /etc/rc.d/rc.local 这个文件:
例如将 apache、mysql、samba、svn 等这些服务的开机自启动问题一起搞定:
vim /etc/rc.d/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 /usr/sbin/apachectl start /etc/rc.d/init.d/mysqld start /etc/rc.d/init.d/smb start /usr/local/subversion/bin/svnserve -d
在CentOS 7上可以使用systemctl命令来使服务默认启动
这里以docker.service为例,当前设置如下所示:
[root@localhost ~]# systemctl status docker.service docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled) Active: inactive (dead) Docs: https://docs.docker.com [root@localhost ~]# systemctl list-unit-files | grep docker docker.service disabled docker.socket disabled [root@localhost ~]#
然后使用systemctl命令来使能docker服务:
[root@localhost ~]# systemctl enable docker.service ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' [root@localhost ~]# systemctl list-unit-files | grep docker docker.service enabled docker.socket disabled [root@localhost ~]#
然后重启服务器就可以看到docker服务启动起来了:
[root@localhost ~]# systemctl list-unit-files | grep docker docker.service enabled docker.socket disabled [root@localhost ~]# systemctl status docker.service docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: active (running) since Fri 2015-12-11 10:18:35 CST; 32s ago Docs: https://docs.docker.com Main PID: 1218 (docker) CGroup: /system.slice/docker.service └─1218 /usr/bin/docker daemon -H fd:// Dec 11 10:18:09 localhost.localdomain docker[1218]: time="2015-12-11T10:18:09.045564389+08:00" level=warning msg="Usage of loopback devices is strongly discouraged for productio...v section." Dec 11 10:18:10 localhost.localdomain docker[1218]: time="2015-12-11T10:18:10.741368042+08:00" level=info msg="[graphdriver] using prior storage driver \"devicemapper\"" Dec 11 10:18:12 localhost.localdomain docker[1218]: time="2015-12-11T10:18:12.309207143+08:00" level=info msg="Firewalld running: true" Dec 11 10:18:30 localhost.localdomain docker[1218]: time="2015-12-11T10:18:30.584205823+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0...IP address" Dec 11 10:18:35 localhost.localdomain docker[1218]: time="2015-12-11T10:18:35.662157286+08:00" level=info msg="Loading containers: start." Dec 11 10:18:35 localhost.localdomain docker[1218]: .. Dec 11 10:18:35 localhost.localdomain docker[1218]: time="2015-12-11T10:18:35.780999775+08:00" level=info msg="Loading containers: done." Dec 11 10:18:35 localhost.localdomain docker[1218]: time="2015-12-11T10:18:35.781038888+08:00" level=info msg="Daemon has completed initialization" Dec 11 10:18:35 localhost.localdomain docker[1218]: time="2015-12-11T10:18:35.781068669+08:00" level=info msg="Docker daemon" commit=a34a1d5 execdriver=native-0.2 graphdriver=de...rsion=1.9.1 Dec 11 10:18:35 localhost.localdomain systemd[1]: Started Docker Application Container Engine. Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]#