Linux中chkconfig命令总结
程序员文章站
2022-07-12 13:41:13
...
一、命令简介
Linux chkconfig命令用于检查,设置系统的各种服务。它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
二、语法及参数
语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
参数:
--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级代号:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
三、使用实例
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
四、Linux下如何添加service系统服务
Linux下service运行过程. 以docker为例: service docker start
- 首先,sevice 会去/etc/init.d下寻找docker脚本, start是docker脚本里的一个参数(你可以去查看networking这个脚本支持的参数)
- 然后告诉系统运行docker这个脚本,剩下的事情就交给docker脚本去坐了,事实就是这么简单。
docker脚本部分内容
[[email protected] init.d]# cat docker
#!/bin/sh
#
# /etc/rc.d/init.d/docker
#
# Daemon for docker.com
#
# chkconfig: 2345 95 95
# description: Daemon for docker.com
### BEGIN INIT INFO
# Provides: docker
# Required-Start: $network cgconfig
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop docker
# Description: Daemon for docker.com
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
prog="docker"
exec="/usr/bin/$prog"
pidfile="/var/run/$prog.pid"
lockfile="/var/lock/subsys/$prog"
logfile="/var/log/$prog"
......................
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
因此,设置新服务开机启动的步骤为:
- 编写一个脚本,然后把它放在/etc/init.d这个目录下
- 这只脚本的权限为可执行,
chmod +x /etc/init.d/serviceName
- 再用service + 脚本名字 + 命令,启动服务
- 设置开机自动启动
chkconfig --add test
chkconfig test on/off //重启后永久生效
// 上面的方法如果不生效,通过update-rc.d 命名设置开机自启动
cd /etc/init.d
sudo update-rc.d test defaults 95
注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了
卸载启动脚本:
cd /etc/init.d
sudo update-rc.d -f test remove
注意:
A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。
B、在init.d里面得脚本是没有后缀名的,如下init.d/目录下的服务脚本
[[email protected] ~]# ls /etc/init.d/
abrt-ccpp auditd cgred functions irqbalance lxc netfs ntpdate psacct rpcbind sandbox sssd ypbind
abrtd autofs cpuspeed haldaemon kdump mcelogd network numad quota_nld rpcgssd saslauthd sysstat
参考