linux 配置服务开机自启动(systemd 和 chkconfig --add 设置开机自启动有什么区别 )
一、如何让一个服务或脚本开机自启动?

1. 三种解决方案

方式一:在/etc/rc.d/rc.local文件中直接添加启动命令
想启动的脚本或服务,把他们启动的命令放入/etc/rc.local这个文件中即可。适用于简单的启动脚本或服务。但请确保在添加之前检查该文件是否存在,并赋予执行权限。

方式二:通过chkconfig配置服务自启动
你需要使用chkconfig命令添加服务,并使用该命令的on参数启用自启动。

方式三:通过systemctl enble配置服务开机自启动
这是在最新的Linux发行版中推荐的方法,它使用系统的服务管理器来配置自启动。

在CentOS7之前(包括7),可以通过chkconfig来配置开机自启动服务,在Centos7后,更推荐通过systemctl来控制服务。

2. systemd 和 chkconfig
systemd是现代化的初始化系统,被广泛采用在大多数主流Linux发行版中,如Ubuntu、Fedora、CentOS等。它使用单位(unit)的概念来管理系统服务。您可以通过systemctl命令添加、删除和管理服务。要设置一个服务在开机时自动启动,您可以使用systemctl enable 命令。

例如,要将nginx服务设置为开机自启动,您可以运行以下命令:

systemctl enable nginx
1
chkconfig --add是一个旧的初始化系统管理工具,主要用于一些较早的Linux发行版,如RHEL(Red Hat Enterprise Linux)6及更早版本。它用于管理/etc/init.d目录中的系统服务脚本,通过修改符号链接来决定是否在开机时启动。您可以使用chkconfig命令来添加、删除和管理服务。要设置一个服务在开机时自动启动,您可以使用chkconfig --add 命令。

例如,要将httpd服务设置为开机自启动,您可以运行以下命令:

chkconfig --add httpd
1
总结,主要区别在于systemd是现代的初始化系统,用于最新的Linux发行版,并使用systemctl命令来管理服务;而chkconfig --add是旧的初始化系统管理工具,用于一些较早的Linux发行版,并使用chkconfig命令来管理服务。

二、chkconfig
在CentOS7之前(包括7),可以通过chkconfig来配置开机自启动服务

1. chkconfig 管理服务脚本要求
Chkconfig管理一个服务或脚本让他开机自启动有下面几个条件:

这个脚本必须存放在/etc/init.d目录下面
必须要有执行权限(x权限)
这个脚本或服务的前几行必须要有
# chkconfig:  必须要有这一行否则chkconfig不认识

#[空格]chkconfig:[空格]默认在哪个运行级别启动这个服务或软件[空格]第几个开机启动的[空格]关机的顺序
1
2
3
要在服务脚本中实现POSIX规范中的函数:start() stop()等
如果你的脚本,没有安装上面要求,会报错类似如下错误: chkconfig --add xxx does not support chkconfig

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不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

三、Linux 运行级别
1. 什么是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命令用来更新和查询不同运行级上的系统服务。

2. 实际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密码方法
参考URL: https://www.cnblogs.com/ljs05/p/7325920.html
————————————————
版权声明:本文为CSDN博主「西京刀客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/inthat/article/details/124813407

12-22 19:53