Linux开机自启/etc/init.d和/etc/rc.d/rc.local
文章目录
- /etc/init.d和/etc/rc.d/rc.local的区别
- /etc/init.d
- systemd介绍
/etc/init.d和/etc/rc.d/rc.local的区别
目的不同:
/etc/rc.d/rc.local:用于在系统启动后执行用户自定义命令,适合简单的启动任务。
/etc/init.d:用于管理系统服务的启动、停止和重启,提供更细粒度的服务管理。
执行时机:
rc.local 在所有其他服务启动完成后执行。
/etc/init.d 中的脚本根据运行级别在启动过程中按需执行。
复杂度和灵活性:
rc.local 更简单,适合不需要复杂管理的任务。
/etc/init.d 提供更强大的服务管理功能,适合需要精确控制的系统服务。
随着 systemd 的普及,新的系统通常使用 systemd 服务单元文件来替代传统的 init.d 脚本,但对 rc.local 的支持仍然保留作为一种便捷的方式来执行启动任务。
/etc/init.d
/etc/rc.d/rc.local 和 /etc/init.d 是 Linux 系统中与启动和服务管理相关的两个不同路径。它们在实现和用法上有显著差异。以下是它们的详细区别和各自用途:
- 服务管理脚本:/etc/init.d 目录包含了系统初始化脚本和服务管理脚本。这些脚本用于启动、停止、重启和检查系统服务的状态。
- 服务控制:每个脚本通常实现 start、stop、restart 和 status 等功能,用于管理特定服务。通过这些脚本,系统管理员可以方便地控制服务的生命周期。
- 与运行级别关联:这些脚本通常与系统的运行级别(runlevel)紧密关联。在传统的 SysVinit 系统中,不同的运行级别代表系统的不同状态(如单用户模式、多用户模式等),并决定哪些服务应该在启动时运行。
- 与 systemd 的关系:在现代使用 systemd 的系统中,/etc/init.d 目录仍然存在以保持向后兼容,但 systemd 的服务单元文件(*.service)已经成为管理服务的主要工具。
示例服务脚本
例如,一个服务脚本可能如下:
#!/bin/sh
# /etc/init.d/my_servicecase "$1" instart)echo "Starting my_service"# Start command for my_service;;stop)echo "Stopping my_service"# Stop command for my_service;;restart)echo "Restarting my_service"# Restart command for my_service;;status)echo "Checking status of my_service"# Status command for my_service;;*)echo "Usage: /etc/init.d/my_service {start|stop|restart|status}"exit 1;;
esacexit 0
/etc/rc.d/rc.local
在很多 Linux 系统中,/etc/rc.d/rc.local 文件是一个用于在系统启动时执行自定义命令和脚本的文件。这种机制在传统的 SysVinit 系统中非常常见。虽然许多现代 Linux 系统已经转向使用 systemd,但仍有一些系统维护对 rc.local 的支持,或者通过兼容层来支持它。
以下是如何使用和编辑 /etc/rc.d/rc.local 文件来添加启动脚本的步骤:
主要特点
- 启动脚本:/etc/rc.d/rc.local 是一个脚本文件,用于在系统启动过程中执行用户自定义命令或脚本。它通常用于执行一些简单的初始化任务,如启动特定的应用程序、设置系统参数等。
- 执行时机:rc.local 脚本通常在所有其他初始化脚本和服务启动完成后才执行。这意味着它在系统的最后阶段运行,确保所有必要的系统服务和资源都已就绪。
- 兼容性:在使用 SysVinit 的传统 Linux 发行版中,这个文件比较常见。对于使用 systemd 的现代发行版,虽然直接支持 rc.local 的情况减少,但可以通过创建 rc-local 服务单元来继续使用。
示例内容
#!/bin/sh
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full SysV style init stuff.echo "Starting custom tasks"# Custom commands or scripts
/path/to/custom/script.shexit 0
- 确保 rc.local 可用
首先,确保系统支持并启用了 rc.local。在一些基于 systemd 的系统中,可能需要启用 rc-local 服务。
检查 rc-local 服务状态
sudo systemctl status rc-local
如果服务未启用或不存在,你可以创建相应的服务文件:
创建 rc-local 服务文件(适用于 systemd 系统) - 创建文件 /etc/systemd/system/rc-local.service 并编辑:
sudo nano /etc/systemd/system/rc-local.service - 添加以下内容:
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.d/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
- 保存并退出编辑器。
- 使服务文件生效,并启用和启动 rc-local 服务:
sudo chmod +x /etc/rc.d/rc.local
sudo systemctl enable rc-local
sudo systemctl start rc-local - 编辑 rc.local 文件
- 打开 /etc/rc.d/rc.local 文件:
sudo nano /etc/rc.d/rc.local - 在文件中添加你希望在系统启动时执行的命令或脚本。在大多数系统中,你需要确保文件以 #!/bin/sh 开头,并在结尾返回退出状态码 0。例如:
#!/bin/sh
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full SysV style init stuff.# Print the date to a log file
echo "System started at $(date)" >> /var/log/rc.local.log# Start a custom service or script
/path/to/your/custom/script.shexit 0
- 保存并退出编辑器。
- 设置执行权限
确保 /etc/rc.d/rc.local 文件具有可执行权限:
sudo chmod +x /etc/rc.d/rc.local
验证
重新启动系统并检查是否执行了 rc.local 中的命令。例如,如果你将日志记录到 /var/log/rc.local.log,可以查看该日志文件以验证脚本是否正确执行。
cat /var/log/rc.local.log
通过这些步骤,你可以在系统启动时执行自定义脚本和命令,从而实现自动化配置和服务启动。尽管 systemd 已经成为主流,但对许多人来说,/etc/rc.d/rc.local 仍然是一个非常方便和熟悉的工具。
项目max-am实战
/etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/localsource /etc/profile# ES start
su - es -c '/opt/elasticsearch-7.10.2/bin/elasticsearch -d'# redis start
/opt/redis-7.0.12/redis_start.sh# mysql start
/opt/mysql/bin/mysqld_safe &# rabbitmq start
nohup /opt/rabbitmq_server-3.7.16/sbin/rabbitmq-server –detached > /dev/null &
# zookeeper start
/opt/zookeeper/zookeeper.sh start &
systemd介绍
systemd 是一个用于管理 Linux 操作系统中的系统和服务启动的系统和服务管理器。它被设计为取代传统的 SysVinit 系统,旨在提供更快的启动时间、并行启动能力和更好的系统管理功能。systemd 已经成为许多主流 Linux 发行版的默认初始化系统,包括 Red Hat Enterprise Linux、Fedora、Debian 和 Ubuntu 等。
主要特点
下面是 systemd 的一些主要特点:
- 并行启动:systemd 可以并行启动系统中的各个服务,而不像传统的 SysVinit 需要按顺序依次启动每个服务,从而大大缩短了启动时间。
- 自动化任务管理:systemd 使用单元文件来描述系统中的各种任务和服务,这些单元文件可以很容易地配置启动、停止、重启和状态检查等操作。
- 集成性:systemd 提供了广泛的功能,包括日志记录、用户会话管理、挂载点管理等,使得它成为一个全面的系统和服务管理解决方案。
- 可靠性:由于其对 Linux 系统的深度整合,systemd 能够更可靠地处理系统启动和服务管理,同时提供更多的故障排除和监控功能。
systemd 单元
在 systemd 中,系统中的各种任务和服务都被表示为单元。这些单元可以是服务单元(*.service
)、挂载点单元(*.mount
)、设备单元(*.device
)、定时器单元(*.timer
)等等。每个单元都有一组属性,用来描述其行为和依赖关系。
与传统的 SysVinit 的比较
相对于传统的 SysVinit,systemd 具有以下优势:
- 更快的启动时间
- 更好的并行性
- 更灵活的任务和服务管理
- 更强大的故障排除和监控能力
总结
在系统管理员和开发者的角度看,systemd 是一个功能强大、高效的系统和服务管理器,为 Linux 系统带来了许多现代化的特性和改进。它已经成为许多流行的 Linux 发行版的标准初始化系统,对于新的 Linux 系统来说,系统管理员通常需要熟悉并掌握 systemd 的使用和配置。
相关文章:

Linux开机自启/etc/init.d和/etc/rc.d/rc.local
文章目录 /etc/init.d和/etc/rc.d/rc.local的区别/etc/init.dsystemd介绍 /etc/init.d和/etc/rc.d/rc.local的区别 目的不同: /etc/rc.d/rc.local:用于在系统启动后执行用户自定义命令,适合简单的启动任务。 /etc/init.d:用于管理…...

DP:两个数组的dp问题
解决两个数组的dp问题的常用状态表示: 1、选取第一个字符串[0-i]区间以及第二个字符串[0,j]区间作为研究对象 2、根据题目的要求确定状态表示 字符串dp的常见技巧 1、空串是有研究意义的,引入空串可以帮助我们思考虚拟的边界如何进行初始化。 2、如…...

嵌入式Linux:格式化I/O
目录 1、格式化输出函数 1.1、printf()函数 1.2、fprintf()函数 1.3、dprintf()函数 1.4、sprintf()函数 1.5、snprintf()函数 2、格式化输入函数 2.1、scanf()函数 2.2、fscanf()函数 2.3、sscanf()函数 在Linux中,格式化I/O(formatted I/O&a…...

【elementui源码解析】如何实现自动渲染md文档-第二篇
目录 1.概要 2.引用文件 1)components.json 2)json-template/string 3)os.EOL 3.变量定义 4.模版填充 5.MAIN_TEMPLATE填充 6.src下的index.js文件 1)install 2)export 7.总结 1.概要 今天看第二个命令no…...

热门开源项目OpenHarmony
目录 1.概述 1.1.开源项目的意义 1.2.开源项目对软件行业的促进作用 1.3.小结 2.OpenHarmony 2.1.技术架构 2.2.分布式软总线 2.2.1.架构 2.2.2.代码介绍 2.2.2.1.代码目录 2.2.2.2.说明 2.2.2.3.发现组网和传输 2.2.2.3.1.发现 2.2.2.3.2.组网 2.2.2.3.3.传输…...

NewspaceAi之GPT使用新体验
GPT功能 使用地址:https://newspace.ai0.cn/ 上车 挂挡 踩油门,一脚到底,开始你的表演 问题1:你能做什么详细告诉我? 下面内容是GPT的回答 当然!作为一个基于GPT-4架构的AI,我能够在许多方面为…...

详解红黑树
红黑树规则 节点是红色或黑色。根节点是黑色。每个叶子节点都是黑色的空节点(NIL节点)。每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 红黑树…...

探索JavaScript逆向工程与风控等级
探索JavaScript逆向工程与风控等级 在当今的网络安全领域,JavaScript逆向工程(简称JS逆向)已成为许多开发者和安全专家关注的焦点。JS逆向主要涉及对JavaScript代码的分析与理解,以发现其内部逻辑、数据流及潜在漏洞。这种技术常用…...

C++ 22 之 立方体案例
c22立方体案例.cpp #include <iostream> #include <string>using namespace std;class Cube{ private:int cube_l; // 长int cube_w; // 宽int cube_h; // 高public:// 设置长void set_l(int l){cube_l 1;}// 设置宽void set_w(int w){cube_w w;}// 设置高void …...

vue2使用antv/g6-editor实现可拖拽流程图
依赖下载 照着这个引入就好,然后npm install 源码 <template><div id"vue-g6-editor"><el-row><el-col :span"24"></el-col></el-row><!-- 工具栏 --><el-row><el-col :span"24&qu…...

springboot学习小结
背景 业务上需要开发,组里一位前辈给我指路 spring基础 什么是spring spring提供一个容器称为spring应用上下文,容器里可以创建和管理组件,组件会在容器里装配好,组件也可以叫bean。 装配不由组件创建他依赖的组件࿰…...

vue聊天发送Emoji表情
在用web端写聊天发送表情的功能中,使用web端有系统自带的unicode表情会出现每端不统一的情况,不好用不能统一,在这里我想到了一个非常好的思路,可以解决这个问题! 那就是发送表情用图片的形式呈现,然后发给…...

360数字安全:2024年4月勒索软件流行态势分析报告
勒索软件传播至今,360 反勒索服务已累计接收到数万勒索软件感染求助。随着新型勒索软件的快速蔓延,企业数据泄露风险不断上升,勒索金额在数百万到近亿美元的勒索案件不断出现。勒索软件给企业和个人带来的影响范围越来越广,危害性…...

【MySQL】日志详解
本文使用的MySQL版本是8 日志概览 它们记录了数据库系统中的不同操作和事件,以便于故障排除、性能优化和数据恢复。本文将介绍MySQL中常见的几种日志,同时也会介绍一点常用的选项。 官方文档:MySQL :: MySQL 8.0 Reference Manual :: 7.4 M…...

MyBatis 延迟加载,一级缓存,二级缓存设置
MyBatis不仅提供了一级缓存和二级缓存机制,还支持延迟加载(Lazy Loading),以进一步优化性能。 1. 延迟加载(Lazy Loading) 延迟加载是在需要时才加载数据,而不是在查询时立即加载所有相关数据。…...

Linux 基本指令2
cp 指令 cp[选项]源文件 目标文件 将源文件的内容复制到目标文件中,源文件可以有多个,最后一个文件为目标文件,目标文件也可以是一段路径,若目的地不是一个目录的话会拷贝失败。若没有路径上的目录则会新建一个,若源是…...

联邦学习的基本流程,联邦学习权重聚合,联邦学习权重更新
目录 联邦学习的基本流程是 S_t = np.random.choice(range(K), m, replace=False) 联邦学习权重聚合 model.state_dict() 联邦学习权重更新 下载数据集 https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz 联邦学习的基本流程是 **1. server初始…...

React保姆级教学
React保姆级教学 一、创建第一个react项目二、JSX基本语法与react基础知识1、 插值语法:2、 循环一个简单列表3、 实现简单条件渲染4、 实现复杂的条件渲染5、 事件绑定6、 基础组件(函数组件)7、 使用useState8、 基础样式控制9、 动态类名1…...

数据结构和矩阵细节用法:double、cell和complex #matlab
矩阵建立 建立矩阵用[]; 矩阵的同一行内的元素用逗号或者空格隔开; 矩阵的不同行的元素用分号隔开 eg. 矩阵 A 1 2 3 4 5 6 7 8 9 在matlab中矩阵A表示为: clc;clear; A[1,2,3;4,5,6;7,8,9]; %或者A[1 2 3;4 5 …...

12. Django 第三方功能应用
12. 第三方功能应用 因为Django具有很强的可扩展性, 所以延伸了第三方功能应用. 通过本章的学习, 读者能够在网站开发过程中快速实现API接口开发, 验证码生成与使用, 站内搜索引擎, 第三方网站实现用户注册, 异步任务和定时任务, 即时通信等功能.12.1 Django Rest Framework框…...

UnityWebRequest获取本地txt文件,其中中文乱码问题(踩坑记录)
Unity获取本地streamingassert下txt文件,遇到点问题,就是用UnityWebRequest下载一个txt文件的时候,原txt在资源管理器用notepad打开显示正常,但是Unity里调试,打印内容却是乱码, 在notepad 转存为utf-8&…...

轮到国产游戏统治Steam榜单
6月10日晚8点,《黑神话:悟空》实体版正式开启全款预售,预售开启不到5分钟,所有产品即宣告售罄。 Steam上,《黑神话:悟空》持续占据着热销榜榜首的位置。 但在《黑神话:悟空》傲人的光环下,还有一款国产游戏取得出色的成绩。 6月10日&#…...

不想搭集群,直接用spark
为了完成布置的作业,需要用到spark的本地模式,根本用不到集群,就不想搭建虚拟机,hadoop集群啥的,很繁琐,最后写作业还用不到集群(感觉搭建集群对于我完成作业来说没有什么意义)&…...

【MATLAB源码-第225期】基于matlab的计算器GUI设计仿真,能够实现基础运算,三角函数以及幂运算。
操作环境: MATLAB 2022a 1、算法描述 界面布局 计算器界面的主要元素分为几大部分:显示屏、功能按钮、数字按钮和操作符按钮。 显示屏 显示屏(Edit Text):位于界面顶部中央,用于显示用户输入的表达式和…...

Scikit-learn 基础教程:机器学习的初步指南
Scikit-learn 是一个用于数据挖掘和数据分析的机器学习库,建立在 NumPy、SciPy 和 matplotlib 之上。它提供了简单而高效的工具来进行数据分析和建模。本文将为您介绍 Scikit-learn 的安装方法、核心组件,以及如何应用这些组件进行一个简单的机器学习项目…...

开源WebGIS全流程常用技术栈
1 数据生产 1.1 uDig uDig(http://udig.refractions.net/)是一个基于Java开源的桌面应用框架,它构建在Eclipse RCP和GeoTools(一个开源的Java GIS包)上。可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看…...

前端开发之HTTP协议认识
上一篇👉: 前端开发之WebSocket通信 文章目录 1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别1.连接方面:2.资源传输优化:3.缓存机制增强:4.主机头识别5.请求方法扩展 2.HTTP 1.1 和 HTTP 2.0 的区别1. 二进制分帧层:2.多路…...

力扣刷题总结 -- 数组26
76. 所有奇数长度子数组的和(简单) 题目要求: 给定一个正整数数组 arr ,计算所有奇数长度子数组的和。 子数组定义为原数组中的一个连续子序列。 返回 arr 中 所有奇数长度子数组的和 。 题目分析: 先得到所有子…...

无线MODBUS通讯模块在供水系统中的应用
一、项目背景 我国是人口大国、农业大国,同时也是贫水大国。由于大量工业废水污染了部分河流、地表的浅层水资源,并且有逐年加重的趋势,再加上农业、绿化等灌溉对水资源的大量消耗,这些因素综合作用进一步加剧了我国水资源紧缺的…...

linux为什么不是实时操作系统
Linux为什么不是实时操作系统? 从我们接触Linux系统开始,一直听到的都是它是非实时操作系统,怎么理解这个非实时呢? 我的理解,非实时,就是中断响应不及时,任务调度不及时。那么,真…...