Linux 系统服务开机自启动指导手册
一、引言
在 Linux 系统中,设置服务开机自启动是常见的系统配置任务。本文档详细介绍了多种实现服务开机自启动的方法,包括 systemctl 方式、通用脚本方式、crontab 方案等,并提供了生产环境下的方案建议和开机启动脚本示例。
二、systemctl 方式
2.1 适用范围
适用于已安装为系统服务且服务文件(.service)存储在/usr/lib/systemd/system的组件。
2.2 设置开机启动
使用systemctl enable xxx指令设置开机启动,其中xxx为服务名。例如,设置mysqld服务开机启动:
systemctl enable mysqld
会在/etc/systemd/system/xxx/(系统服务)或/etc/systemd/user/(用户服务)下创建.service 文件的软连接。如mysqld服务,会创建从/etc/systemd/system/multi - user.target.wants/mysqld.service到/usr/lib/systemd/system/mysqld.service的软连接。
2.3 取消开机启动
执行systemctl disable xxx,或者手动移除/etc/systemd/system/xxx/或/etc/systemd/user/下相应软连接或服务文件。
2.4 查看开机启动状态
使用systemctl status xxx查看服务当前状态及是否开机启动。例如,查看mysql服务:
systemctl status mysqld
2.5 分类查看服务
查看系统中已经enable的服务:
systemctl list-unit-files --state=enabled
systemctl list-enabled
查看系统中已经disable的服务:
systemctl list-unit-files --state=disabled
systemctl list-enabled
三、chkconfig 方式
3.1 适用条件
服务脚本文件必须在/etc/init.d/目录下,且结合/etc/rc.d/rc0.d~rc6.d目录实现,同时服务脚本文件必须包含必要的头部脚本代码。
3.2 设置开机启动
使用
chkconfig --add mysql
chkconfig --level 3 mysql on/off
其中mysqld为服务名,–level 3表示在运行级别 3 下设置开机启动或关闭。
3.3 查看开机启动状态
使用
chkconfig --list mysql
四、通用脚本方式
4.1 适用范围
不管组件是否已安装为系统服务均适用。
4.2 方法一:追加启动命令到默认启动脚本
将启动命令追加到/etc/rc.local(或/etc/rc.d/rc.local,前者是后者的软连接)。需要先赋予/etc/rc.d/rc.local可执行权限。
chmod +x /etc/rc.d/rc.local
echo "/usr/local/your_service_start_command" >> /etc/rc.d/rc.local
4.3 方法二:编写启动脚本并放置在特定目录
编写启动脚本.sh,放置到/etc/profile.d目录下。脚本需设置可执行权限,如:
chmod +x /etc/profile.d/your_service_start.sh
4.4 方法三:编写启动脚本并追加执行指令到默认启动脚本
编写启动脚本.sh,设置可执行权限后,将脚本的执行指令追加到/etc/rc.local或/etc/rc.d/rc.local。例如:
chmod +x /usr/local/your_service_start.sh
echo "/usr/local/your_service_start.sh" >> /etc/rc.d/rc.local
五、crontab 方案
5.1 适用范围
适用于需要灵活调度任务的场景,可实现开机启动以及按特定时间间隔执行任务。
5.2 设置开机启动
使用@reboot关键字实现开机启动功能。例如,开机时执行/usr/local/daemonProcess/somescript.sh脚本:
crontab -e
#### 在打开的文件中添加以下内容
@reboot /usr/local/daemonProcess/somescript.sh
5.3 特殊关键字及执行时间
@reboot:重启时执行一次,实测比/etc/rc.d/rc.local更早执行(提前 1 - 2s),比默认 1 分钟定时提前 30s 左右。
@yearly:一年执行一次,1 月 1 号 0 点 0 分执行,等同于@annually。
@monthly:一月执行一次,每月 1 号 0 点 0 分执行。
@weekly:一周执行一次,即"0 0 * * 0"。
@daily:一天执行一次,即"0 0 * * *"。
@hourly:一小时执行一次,即"0 * * * "。
5.4 特别注意
是否同时使用@reboot和定时任务,需根据实际业务需要决定。若守护定时设置为 1 分钟(即 * * * *),建议不再设置@reboot,以免开机启动后的 1 分钟内重复执行;若守护定时间隔较大,建议同时使用@reboot,确保应用服务及时启动。
六、生产环境开机启动方案建议
在生产环境中,建议只采用一种开机启动方案,确保所有组件、服务统一,便于服务较多时的快速运维。比如,有些服务默认安装时不会自动生成系统服务,所以 systemctl 方式不能适用生产环境中所有组件、服务。如果此时按照各组件、服务分别制定开机启动方案,则在后续如果服务启动异常或服务发版时,就需要明确识别各服务的开机启动方案,然后做相应的操作,提高运维成本,增加出错概率。
七、开机启动脚本示例
7.1 追加启动命令到 /etc/rc.local 或 /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
# 开机启动脚本/usr/local/AutoStartOnBoot.sh
chmod +x /usr/local/AutoStartOnBoot.sh
# 本脚本需要依赖/etc/rc.d/rc.local
# rc.local在加载环境变量之前执行,所以此处需要人工加载
source /etc/profile
八、总结
通过本文档介绍的多种开机自启动方案,用户可以根据不同的服务类型和业务需求,选择最合适的方法来实现 Linux 系统服务的开机自启动。在生产环境中,统一的开机自启动方案有助于降低运维成本,提高系统的稳定性和可维护性。
相关文章:
Linux 系统服务开机自启动指导手册
一、引言 在 Linux 系统中,设置服务开机自启动是常见的系统配置任务。本文档详细介绍了多种实现服务开机自启动的方法,包括 systemctl 方式、通用脚本方式、crontab 方案等,并提供了生产环境下的方案建议和开机启动脚本示例。 二、systemct…...

分布式多卡训练(DDP)踩坑
多卡训练最近在跑yolov10版本的RT-DETR,用来进行目标检测。 单卡训练语句(正常运行): python main.py多卡训练语句: 需要通过torch.distributed.launch来启动,一般是单节点,其中CUDA_VISIBLE…...
Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)
https://codeforces.com/contest/2063/problem/C 牢记一棵树上两个节点如果相邻,它们有一条边会重叠,两个节点延伸出去的所有不同边是两个节点入度之和-1而不是入度之和,那么如果这棵树上有三个节点它们的入度都相同,那么优先选择非相邻的两个节点才能使所有不同边的数量最大!!…...

C++17 新特性解析:Lambda 捕获 this
C17 引入了许多改进和新特性,其中之一是对 lambda 表达式的增强。在这篇文章中,我们将深入探讨 lambda 表达式中的一个特别有用的新特性:通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性,还极大地简化了某些场景下…...
Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
在Spring Boot中使用Micrometer集成Prometheus来监控Java应用性能是一种常见的做法。 一、Micrometer简介 Micrometer是一个开源的Java项目,主要用于为JVM应用程序提供监控和度量功能。以下是对Micrometer的详细介绍: 定义与功能 Micrometer是一个针…...
Spring Boot 事件驱动:构建灵活可扩展的应用
在 Spring Boot 应用中,事件发布和监听机制是一种强大的工具,它允许不同的组件之间以松耦合的方式进行通信。这种机制不仅可以提高代码的可维护性和可扩展性,还能帮助我们构建更加灵活、响应式的应用。本文将深入探讨 Spring Boot 的事件发布…...

IM系统设计
读多写少,一般采用写扩散成timeline来做 写扩散模式 利用last message id作为这个作为最后一个消息体 timeline和批量未读和ack 利用ZSET来维护连接的定时心跳,来续约运营商的连接不断开...

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包
华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包 刷机教程说明: 适用机型:华为EC6110-T、华为EC6110-U、华为EC6110-M 破解总分为两个部分:拆机短接破解(保留IPTV)和OTT卡刷(不保留IPTV)…...

ASP.NET Blazor托管模型有哪些?
今天我们来说说Blazor的三种部署方式,如果大家还不了解Blazor,那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性: ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…...
PyTorch广告点击率预测(CTR)利用深度学习提升广告效果
目录 广告点击率预测问题数据集结构广告点击率预测模型的构建1. 数据集准备2. 构建数据加载器3. 构建深度学习模型4. 训练与评估 总结 广告点击率预测(CTR,Click-Through Rate Prediction)是在线广告领域中的重要任务,它帮助广告平…...

PAT甲级-1017 Queueing at Bank
题目 题目大意 银行有k个窗口,每个窗口只能服务1个人。如果3个窗口已满,就需要等待。给出n个人到达银行的时间和服务时间,要求计算每个人的平均等待时间。如果某个人的到达时间超过17:00:00,则不被服务,等待时间也不计…...

OneData体系架构详解
阿里巴巴的 OneData 体系架构方法论,主要分为三个阶段:业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块(Business Segment) 业务板块是OneData体系架构中的第一步&…...
Gin 框架入门实战系列教程
一,Gin介绍 Gin是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用Gin框架。 Gin最擅长的就是Api接口的高并发,如果项目的规模不大,业务相对简单…...
鸿蒙harmony json转对象(2)
在ArkTS(Ark TypeScript)中,接口(interface)是用来定义一个对象的结构,它可以包含属性、方法签名,以及嵌套的类型(包括其他接口或对象类型)。因此,接口里面可…...

M-LAG与E-trunk
M-LAG和E-trunk都是用来实现跨设备链路聚合,解决单点故障的,其大部分特性相同,工作模式M-LAG更胜一筹,支持双活,而且其原理感觉像是vrrpmstp的升级版,是往增加网络可靠性去发展的;而E-trunk是基于LACP扩展实现…...
【面试常见问题】
如何自我介绍 自我介绍是面试关键部分,是面试官了解求职者的首要途径,清晰自信的介绍能提升面试官印象,对求职成功至关重要。 糟糕的自我介绍示例 求职者朱晓明虽表明自己善于交际、积极,23 年毕业且从事 java 开发,…...

Spring Boot Starter介绍
前言 大概10来年以前,当时springboot刚刚出现并没有流行,当时的Java开发者们开发Web应用主要是使用spring整合springmvc或者struts、iBatis、hibernate等开发框架来进行开发。项目里一般有许多xml文件配置,其中配置了很多项目中需要用到的Be…...
vue和reacts数据响应式的差异
Vue 的数据响应式: 原理: Vue 使用 Object.defineProperty 或 Proxy(在 Vue 3 中)来实现数据的响应式。当创建 Vue 实例时,会对 data 对象中的属性进行遍历,将其转换为响应式属性。对于 Object.definePro…...
OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
安装OpenEuler后,可以从系统基础设置、网络配置、性能优化等方面进行配置和优化,以下是具体内容: 系统基础设置 更新系统:以root用户登录系统后,在终端中执行sudo yum update命令,对系统进行更新…...
npm命令与yarn命令的区别
npm与Yarn的区别详解 在软件开发中,npm和Yarn都是流行的包管理工具,它们各自拥有独特的特性和优势。以下是它们的主要区别: 1. 安装速度 npm:安装速度相对较慢,尤其是在依赖项较多的情况下。Yarn:采用并…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...