chkconfig 工具
在 Centos 6 以及之前的版本是使用 chkconfig 工具来管理系统的服务,使用 top 命令可以看到进程号为 1 的进程是 init,即 Sys V 。但在 Centos 7 里面已经默认不使用了,Centos 7 中 top 命令可以看到进程号为 1 的已经替换成了 systemd ,但为了和之前的版本兼容,作为过渡,Centos 7 中还可以使用。
语法:
chkconfig (选项)
选项:
- –add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
- –del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
- –level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
等级代号列表:
- 等级0表示:表示关机
- 等级1表示:单用户模式
- 等级2表示:无网络连接的多用户命令行模式
- 等级3表示:有网络连接的多用户命令行模式
- 等级4表示:不可用
- 等级5表示:带图形界面的多用户模式
- 等级6表示:重新启动
[root@localhost ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
[root@localhost ~]# chkconfig --level 345 network off
[root@localhost ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:关 4:关 5:关 6:关
新增一个服务:
- 服务脚本必须放在
/etc/init.d/
目录下; - 使用命令
chkconfig --add service_name
在 chkconfig 工具列表中添加此服务; - 使用命令
chmod 755 service_name
赋予执行权限; - 使用命令
chkconfig --level 35 service_name on
更改启动级别。
在启动脚本中:
#!/bin/bash
#chkconfig: 2345 80 90
#description:auto_run
第一行,告诉系统使用的shell,所有的shell脚本都是这样。
第二行,chkconfig后面有三个参数2345,80和90告诉chkconfig程序,需要在rc2.d~rc5.d目录下,创建名字为 S80auto_run的文件连接,连接到/etc/rc.d/init.d目录下的的auto_run脚本。第一个字符是S,系统在启动的时候,运行脚本auto_run,就会添加一个start参数,告诉脚本,现在是启动模式。同时在rc0.d和rc6.d目录下,创建名字为K90auto_run的文件连接,第一个字符为K,系统在关闭系统的时候,会运行auto_run,添加一个stop,告诉脚本,现在是关闭模式。
注意上面的三行中,第二,第三行是必须的,否则在运行chkconfig –add auto_run时,会报错。
80 数字越小 启动优先级别越高
90 数字越小 关闭优先级别越高