目录
[1. 三种解决方案](#1. 三种解决方案)
[2. systemd 和 chkconfig](#2. systemd 和 chkconfig)
[1. chkconfig 管理服务脚本要求](#1. chkconfig 管理服务脚本要求)
[2. chkconfig命令](#2. chkconfig命令)
[三、Linux 运行级别](#三、Linux 运行级别)
linux 配置服务开机自启动(systemd 和 chkconfig --add 设置开机自启动有什么区别 );
Ubuntu系统中update-rc.d命令(有些Linux发行版用chkconfig命令),是用来更新系统启动项的脚本。这些启动项脚本的链接位于/etc/rcN.d/目录(N代表0~6),对应脚本位于/etc/init.d/目录。在了解update-rc.d命令之前,你需要知道的是有关Linux 系统主要启动步骤,以及Ubuntu中运行级别的知识。
一、Linux 系统主要启动步骤
- 读取 MBR 的信息,启动 Boot Manager。
- 加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
- init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别。通常情况下 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
- 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
- 启动登录管理器,等待用户登录。
二、如何让一个服务或脚本开机自启动?
1. 三种解决方案
方式一:在/etc/rc.d/rc.local文件中直接添加启动命令
想启动的脚本或服务,把他们启动的命令放入/etc/rc.local这个文件中即可。适用于简单的启动脚本或服务。但请确保在添加之前检查该文件是否存在,并赋予执行权限。
方式二:通过chkconfig配置服务自启动
你需要使用chkconfig命令添加服务,并使用该命令的on参数启用自启动。
方式三:通过systemctl enble配置服务开机自启动
这是在最新的Linux发行版中推荐的方法,它使用系统的服务管理器来配置自启动。
方式四:通过update-rc.d
在CentOS7之前(包括7),可以通过chkconfig来配置开机自启动服务,在Centos7后,更推荐通过systemctl来控制服务。
2. systemd 和 chkconfig
systemd是现代化的初始化系统,被广泛采用在大多数主流Linux发行版中,如Ubuntu、Fedora、CentOS等。它使用单位(unit)的概念来管理系统服务。您可以通过systemctl命令添加、删除和管理服务。要设置一个服务在开机时自动启动,您可以使用systemctl enable 命令。
例如,要将nginx服务设置为开机自启动,您可以运行以下命令:
systemctl enable nginx
chkconfig --add是一个旧的初始化系统管理工具,主要用于一些较早的Linux发行版,如RHEL(Red Hat Enterprise Linux)6及更早版本。它用于管理/etc/init.d目录中的系统服务脚本,通过修改符号链接来决定是否在开机时启动。您可以使用chkconfig命令来添加、删除和管理服务。要设置一个服务在开机时自动启动,您可以使用chkconfig --add 命令。
例如,要将httpd服务设置为开机自启动,您可以运行以下命令:
chkconfig --add httpd
总结,主要区别在于systemd是现代的初始化系统,用于最新的Linux发行版,并使用systemctl命令来管理服务;而chkconfig --add是旧的初始化系统管理工具,用于一些较早的Linux发行版,并使用chkconfig命令来管理服务。
3、chkconfig
在CentOS7之前(包括7),可以通过chkconfig来配置开机自启动服务
3.1. chkconfig 管理服务脚本要求
Chkconfig管理一个服务或脚本让他开机自启动有下面几个条件:
这个脚本必须存放在/etc/init.d目录下面
必须要有执行权限(x权限)
这个脚本或服务的前几行必须要有
chkconfig: 必须要有这一行否则chkconfig不认识
#[空格]chkconfig:[空格]默认在哪个运行级别启动这个服务或软件[空格]第几个开机启动的[空格]关机的顺序
1
2
3
要在服务脚本中实现POSIX规范中的函数:start() stop()等
如果你的脚本,没有安装上面要求,会报错类似如下错误: chkconfig --add xxx does not support chkconfig
3.2. chkconfig命令
chkconfig ---add xxx //把服务添加到chkconfig列表,把服务或脚本加入到chkconfig 管理之中。
chkconfig --del xxx // chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig xxx on //开启开机自动启动,配置系统启动时该脚本默认启动
chkconfig xxx off //关闭开机自动启动
chkconfig --list //查看所有chklist中服务
chkconfig --list xxx 查看指定服务
chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
4、update-rc.d命令详解
update-rc.d是一个Perl脚本,是用来自动升级System V类型初始化脚本,简单来说就是哪些东西是你想要在系统引导初始化的时候运行的,哪些是希望在关机或重启时候停止的,你都可以用它来设置。这些脚本的链接位于/etc/rcN.d/下(N代表0~6),对应脚本位于/etc/init.d/下。
1. 从所有的运行级别中删除指定的启动项
update-rc.d -f <basename> remove
2. 按指定顺序、在指定运行级别中启动或关闭
设置启动项:
update-rc.d <serviceName> start <order> <runlevel>
设置停止项:
update-rc.d <serviceName> stop <order> <runlevel>
设置启动和停止可以写在一起,例如:
update-rc.d <basename> start|stop <order> <runlevels>
实例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这三个运行级别中,第20个关闭apachectl。这是合并起来的写法,注意它有2个点号,效果等于下面方法:
update-rc.d apachectl defaults
3. A启动后B才能启动,B关闭后A才关闭
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10
4. 启动和关闭顺序为90,级别默认
update-rc.d <basename> defaults 90
三、Linux 运行级别
- 什么是linux运行级别
Linux OS 将操作 环境分为以下7个等级,即
0: 系统停机(关机)模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机。
1:单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2:多用户模式,没有NFS网络支持。
3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式。
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5:图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如X Window系统。
6:重启模式,默认运行级别不能设为6,否则不能正常启动,就会一直开机重启开机重启。 就是我们平时执行 reboot的情况。
运行级的改变可以通过init命令来切换。例如,假设你要维护系统进入单用户状态,以使用init1来切换。
runlevel查看当前的运行级:
runlevel
N 5
1
2
在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K和S开头的文件, 按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux提供了chkconfig命令用来更新和查询不同运行级上的系统服务。
- 实际demo
以centos系统默认服务network说明:
cat /etc/init.d/network
1
其中 # chkconfig: 2345 10 90用来指定服务在各个level下的启动顺序。
该配置的含义是network服务在2、3、4、5的level下的启动顺序是10,在1和6的level等级下的启动顺序是90。
四、参考
Linux 7个运行级别(0:关机,停机模式、1:单用户模式、2:多用户模式、3:完整的多用户文本模式、4:系统未使用,保留一般不用、5:图形化模式、6:重启模式)、重置root密码方法