***linux 配置服务开机自启动

目录

一、如何让一个服务或脚本开机自启动?

[1. 三种解决方案](#1. 三种解决方案)

[2. systemd 和 chkconfig](#2. systemd 和 chkconfig)

二、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 系统主要启动步骤

  1. 读取 MBR 的信息,启动 Boot Manager。
  2. 加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
  3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别。通常情况下 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
  4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
  5. 启动登录管理器,等待用户登录。

二、如何让一个服务或脚本开机自启动?

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 运行级别

  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命令用来更新和查询不同运行级上的系统服务。

  1. 实际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密码方法

相关推荐
编程修仙25 分钟前
Collections工具类
linux·windows·python
芝麻团坚果41 分钟前
对subprocess启动的子进程使用VSCode python debugger
linux·ide·python·subprocess·vscode debugger
Elastic 中国社区官方博客1 小时前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
写点什么啦1 小时前
[debug]不同的window连接ubuntu的vscode后无法正常加载kernel
linux·vscode·ubuntu·debug
wellnw1 小时前
[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
linux·ubuntu
不爱学习的YY酱1 小时前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
DC_BLOG1 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
坐公交也用券1 小时前
使用Python3实现Gitee码云自动化发布
运维·gitee·自动化
XY.散人2 小时前
初识Linux · 信号处理 · 续
linux·信号处理
1900432 小时前
linux复习5:C prog
linux·运维·服务器