在 CentOS 系统中开机自动执行 Shell 脚本

在 CentOS 系统中,可以通过以下方法设置开机自动执行 Shell 脚本。推荐使用 systemd 服务(现代 Linux 系统的标准方式),也可以使用传统的 /etc/rc.local 方法。


方法 1:使用 Systemd 服务(推荐)

1. 创建 Systemd 服务文件

创建一个新的服务单元文件(例如 custom-script.service):

sudo vi /etc/systemd/system/custom-script.service
2. 编写服务配置

将以下内容粘贴到文件中,按需修改 ExecStartDescription

[Unit]
Description=Custom Startup Script
After=network.target[Service]
Type=simple
ExecStart=/path/to/your/script.sh
TimeoutSec=0
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
  • 关键参数说明
    • ExecStart: Shell 脚本的绝对路径(必须确保脚本有执行权限)。
    • After=network.target: 确保脚本在网络就绪后执行。
    • RemainAfterExit=yes: 脚本执行完成后,服务状态保持为“active”。
3. 设置脚本权限
# 赋予脚本可执行权限
sudo chmod +x /path/to/your/script.sh
4. 启用并启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload# 启用开机自启动
sudo systemctl enable custom-script# 启动服务(可选,测试脚本)
sudo systemctl start custom-script# 检查服务状态
systemctl status custom-script

方法 2:使用 /etc/rc.local(传统方式)

如果系统支持 rc.local,可按以下步骤操作:

1. 创建或编辑 rc.local 文件
sudo vi /etc/rc.local
2. 添加脚本执行命令

在文件中添加以下内容(确保脚本路径正确):

#!/bin/bash
/path/to/your/script.sh
exit 0
3. 赋予 rc.local 执行权限
sudo chmod +x /etc/rc.local
4. 启用 rc-local 服务(如果未启用)
# 检查是否已存在 rc-local 服务
systemctl status rc-local# 如果不存在,创建服务文件
sudo vi /etc/systemd/system/rc-local.service

粘贴以下内容:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local[Service]
Type=forking
ExecStart=/etc/rc.local
TimeoutSec=0
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
5. 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable rc-local
sudo systemctl start rc-local

验证和注意事项

  1. 脚本测试

    • 手动运行脚本确认无误:
      sudo /path/to/your/script.sh
      
  2. 日志查看

    • 对于 systemd 服务,使用以下命令查看日志:
      journalctl -u custom-script -f
      
  3. 脚本权限和路径

    • 确保脚本使用绝对路径,避免依赖环境变量。
    • 建议将脚本放在 /usr/local/bin/ 或专用目录(如 /opt/scripts/)。
  4. 依赖顺序

    • 如果脚本依赖其他服务(如网络、数据库),在 [Unit] 中添加 After=network.target mysqld.service

常见问题排查

  • 脚本未执行

    • 检查脚本权限:chmod +x /path/to/script.sh
    • 检查 systemd 服务状态:systemctl status custom-script
    • 检查日志:journalctl -u custom-script
  • /etc/rc.local 不生效

    • 确认系统支持 rc.local(CentOS 7+ 默认不启用,需手动配置)。
  • 脚本环境问题

    • 在脚本中指定 Shell 解释器(如 #!/bin/bash)。
    • 避免依赖交互式环境变量,使用绝对路径。

通过以上方法,Shell 脚本会在系统启动时自动执行。推荐优先使用 systemd 服务,它提供更精细的控制和日志跟踪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41970.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 点击放大,图片预览效果

背景: 在vue框架element组件的背景下,我们对图片点击放大(单张);如果是多张图片,要支持左右滑动查看多张图片(多张)。 图片单张放大,el-image图片组件,或者原生的img标签。previewSrcList string[单个] 图片…

个人学习编程(3-27) leetcode刷题

合并两个有序链表: 当我们执行 current->next node; 时,current 最初指向的是 dummy 节点,因此这行代码实际上是: dummy->next node; /*** Definition for singly-linked list.* struct ListNode {* int val;* st…

游戏引擎学习第177天

仓库:https://gitee.com/mrxiao_com/2d_game_4 今日计划 调试代码有时可能会非常困难,尤其是在面对那些难以发现的 bug 时。显然,调试工具是其中一个非常重要的工具,但在游戏开发中,另一个非常常见的工具就是自定义的调试工具&a…

【MySQL】MySQL结构体系及核心组件功能是怎样的?

简要回答: MySQL采用三层架构:连接层处理网络连接和认证;服务层包含SQL解析、优化器等核心功能;存储引擎层插件式支持InnoDB等引擎。其中InnoDB通过redo log 实现事务持久性,优化器负责选择最优执行计划。 1.MySQL整体…

VR视频加密是如何实现的对视频保护?

如今VR(虚拟现实)技术正以前所未有的速度改变着我们的生活和工作方式。从沉浸式的游戏体验到远程教育、企业培训、医疗康复等多个领域,VR视频的应用场景不断拓展,为人们带来了全新的视觉盛宴。然而,随着VR视频的广泛应…

Faster RCNN Pytorch 实现 代码级 详解

基本结构: 采用VGG提取特征的Faster RCNN. self.backbone:提取出特征图->features self.rpn:选出推荐框->proposals self.roi heads:根据proposals在features上进行抠图->detections features self.backbone(images.tensors)proposals, proposal_losses…

LabVIEW时间触发协议

介绍了基于LabVIEW开发的时间触发协议应用,通过实例解析了FlexRay总线的设计与优化。通过技术细节、系统构建和功能实现等方面,探讨了LabVIEW在现代工业通信系统中的应用效能,特别是在提高通信可靠性和实时性方面的贡献。 ​ 项目背景 在工…

Linux 进程3-fork创建子进程继承父进程缓冲区验证

目录 1. fork创建子进程继承父进程缓冲区验证 1.1 write向标准输出(终端屏幕)写入数据验证 1.1.1 write函数写入数据不带行缓冲刷新 \n 1.1.2 write函数写入数据带行缓冲刷新 \n 1.2 fork创建前执行printf函数 1.2.1 fork创建前执行printf函数带\n…

Celery 全面指南:Python 分布式任务队列详解

Celery 全面指南:Python 分布式任务队列详解 Celery 是一个强大的分布式任务队列/异步任务队列系统,基于分布式消息传递,专注于实时处理,同时也支持任务调度。本文将全面介绍 Celery 的核心功能、应用场景,并通过丰富…

excel 列单元格合并(合并列相同行)

代码 首先自定义注解CellMerge,用于标记哪些属性需要合并,哪个是主键**(这里做了一个优化,可以标记多个主键)** import org.dromara.common.excel.core.CellMergeStrategy;import java.lang.annotation.*;/*** excel…

mac m4 Homebrew安装MySQL 8.0

1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8: brew install mysql8.0 安装完成后,您可以通过以下命令来验证MySQL是否已成功安装: 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…

Wi-SUN技术,强势赋能智慧城市构筑海量IoT网络节点

在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节…

FALL靶机攻略

1.下载靶机,导入靶机 下载地址:https://download.vulnhub.com/digitalworld/FALL.7z 开启靶机。 2. 靶机、kali设置NAT网卡模式 3. kali扫描NAT网卡段的主机 kali主机 nmap扫描:nmap 192.168.92.1/24 判断出靶机ip是192.168.92.133。开启…

蓝桥杯高频考点——二分(含C++源码)

二分 基本框架整数查找(序列二分的模版题 建议先做)满分代码及思路solution 子串简写满分代码及思路solution 1(暴力 模拟双指针70分)solution 2(二分 AC) 管道满分代码及思路样例解释与思路分析solution 最…

Rust vs. Go: 性能测试(2025)

本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go,但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper,它基于 Tokio 异步运…

【NUUO 摄像头】(弱口令登录漏洞)

漏洞简介:NUUO 是NUUO公司的一款小型网络硬盘录像机设备。 NUUO NVRMini2 3.0.8及之前版本中存在后门调试文件。远程攻击者可通过向后门文件handle_site_config.php发送特定的请求利用该漏洞执行任意命令。 1.Fofa搜索语句: 在Fofa网站,搜索&…

PyQt6实例_批量下载pdf工具_exe使用方法

目录 前置: 工具使用方法: step one 获取工具 step two 安装 step three 使用 step four 卸载 链接 前置: 1 批量下载pdf工具是基于博文 python_巨潮年报pdf下载-CSDN博客 ,将这个需求创建成界面应用,达到可…

matlab 模拟 闪烁体探测器全能峰

clc;clear;close all %% 参数设置 num_events 1e5; % 模拟事件数 E 662e3; % γ射线能量(eV) Y 38000; % 光产额(photon/MeV,NaI(Tl)) eta 0.2; % 量子效率 G 1e6; …

启扬RK3568开发板已成功适配OpenHarmony4.0版本

启扬智能IAC-RK3568-Kit开发板支持Debian、Android等常见开源操作系统,目前已完成OpenHarmony4.0开源国产操作系统的适配工作,满足国产化开源操作系统客户的需求。 启扬智能IAC-RK3568-Kit开发板基于瑞芯微RK3568处理器设计,主频最高可达2.0G…

蓝桥与力扣刷题(蓝桥 山)

题目:这天小明正在学数数。 他突然发现有些止整数的形状像一挫 “山”, 比㓚 123565321、145541123565321、145541, 它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。 小朋数了衣久也没有数完, 他惒让你告诉他在区间 [2022,2022222022] 中有 多少个数…