在 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. 编写服务配置
将以下内容粘贴到文件中,按需修改 ExecStart 和 Description:
[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
验证和注意事项
-
脚本测试:
- 手动运行脚本确认无误:
sudo /path/to/your/script.sh
- 手动运行脚本确认无误:
-
日志查看:
- 对于 systemd 服务,使用以下命令查看日志:
journalctl -u custom-script -f
- 对于 systemd 服务,使用以下命令查看日志:
-
脚本权限和路径:
- 确保脚本使用绝对路径,避免依赖环境变量。
- 建议将脚本放在
/usr/local/bin/或专用目录(如/opt/scripts/)。
-
依赖顺序:
- 如果脚本依赖其他服务(如网络、数据库),在
[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 解释器(如
通过以上方法,Shell 脚本会在系统启动时自动执行。推荐优先使用 systemd 服务,它提供更精细的控制和日志跟踪。
相关文章:
在 CentOS 系统中开机自动执行 Shell 脚本
在 CentOS 系统中,可以通过以下方法设置开机自动执行 Shell 脚本。推荐使用 systemd 服务(现代 Linux 系统的标准方式),也可以使用传统的 /etc/rc.local 方法。 方法 1:使用 Systemd 服务(推荐)…...
【Linux】应用层协议 HTTP
应用层协议 HTTP 一. HTTP 协议1. URL 地址2. urlencode 和 urldecode3. 请求与响应格式 二. HTTP 请求方法1. GET 和 POST (重点) 三. HTTP 状态码四. HTTP 常见报头五. 手写 HTTP 服务器 HTTP(超文本传输协议)是一种应用层协议,用于在万维网…...
Linux下的socket演示程序3(udp)
server.cpp #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define SER_PORT 8888 //端口号 #define SER_IP "10.148.4.168" //服务器IP…...
数据可视化TensorboardX和tensorBoard安装及使用
tensorBoard 和TensorboardX 安装及使用指南 tensorBoard 和 TensorBoardX 是用于可视化机器学习实验和模型训练过程的工具。TensorBoard 是 TensorFlow 官方提供的可视化工具,而 TensorBoardX 是其社区驱动的替代品,支持 PyTorch 等其他框架。以下是它…...
【Hugging Face 开源库】Diffusers 库 —— 扩散模型
Diffusers 的三个主要组件1. DiffusionPipeline:端到端推理工具__call__ 函数callback_on_step_end 管道回调函数 2. 预训练模型架构和模块UNetVAE(Variational AutoEncoder)图像尺寸与 UNet 和 VAE 的关系EMA(Exponential Moving…...
AWTK-WEB 快速入门(6) - JS WebSocket 应用程序
WebSocket 可以实现双向通信,适合实时通信场景。本文介绍一下使用 Javacript 语言开发 AWTK-WEB 应用程序,并用 WebSocket 与服务器通讯。 用 AWTK Designer 新建一个应用程序 先安装 AWTK Designer: https://awtk.zlg.cn/web/index.html …...
tcl语法中的命令
tcl语法中存在多少个命令呢? 如下, after errorInfo load pwd tcl_rcFileName append eval lrange re_syntax tcl_startOfNextWord apply exec lrepeat read tcl_startOfPreviousWord argc exit lreplace refchan tcl_traceCompile argv expr lreverse r…...
ESLint报错:Could not find config file.
如果你的ESLint的版本大于 8,同时使用 .eslinrc.js 和 .eslintignore 作为配置文件,且目前用的是 VSCODE ,就有可能遇到报错: Could not find config file. 这个是因为 VSCode 中 ESLint 插件的配置 eslint.useFlatConfig 的问题…...
北斗导航 | 基于北斗三号短报文通信的北斗-YOLO融合系统原理,算法公式,系统流程框图,matlab代码,应用场景
以下是关于基于北斗三号短报文通信的北斗-YOLO融合系统的详细解析,包含原理、算法公式、系统流程、Matlab代码框架和应用场景。一、系统原理 北斗-YOLO融合系统结合了北斗三号短报文通信(双向通信能力)和YOLO目标检测算法,用于在无地面网络覆盖区域实现实时目标检测与数据传…...
Vue3 中使用 vuedraggable 实现拖拽排序功能,分组拖拽
Vue3 中使用 vuedraggable 实现拖拽排序功能,分组拖拽 安装draggable npm install vuedraggablenext --save基础用法示例 <template><div class"app-container"><draggable v-model"list" item-key"id":group"…...
使用VSCODE导致CPU占用率过高的处理方法
1:cpptools 原因:原因是C/C会在全局搜索文件,可以快速进行跳转;当打开的文件过大,全局搜索文件会占用大量CPU; 处理方法: 1:每次只打开小文件夹; 2:打开大文…...
【力扣hot100题】(004)盛水最多的容器
现在能这么快做出来纯粹是因为当时做的时候给我的印象实在太深了。 犹记得这题是当年开启我用CSDN记录leetcode日记历史的开端。 总之印象太深了不会都不行啊!!记得当年是想到用各种动态规划回溯等等等等最终发现是最简单贪心和双指针。 解法也是非常简…...
用Deepseek写扫雷uniapp小游戏
扫雷作为Windows系统自带的经典小游戏,承载了许多人的童年回忆。本文将详细介绍如何使用Uniapp框架从零开始实现一个完整的扫雷游戏,包含核心算法、交互设计和状态管理。无论你是Uniapp初学者还是有一定经验的开发者,都能从本文中获得启发。 …...
宝塔面板部署 Laravel 项目无法访问静态资源的解决方法
提示:“奔跑吧邓邓子” 的常见问题专栏聚焦于各类技术领域常见问题的解答。涵盖操作系统(如 CentOS、Linux 等)、开发工具(如 Android Studio)、服务器软件(如 Zabbix、JumpServer、RocketMQ 等)以及远程桌面、代码克隆等多种场景。针对如远程桌面无法复制粘贴、Kuberne…...
C/C++中的条件编译指令#if
#if 是 C/C 中的预处理指令,用于条件编译。它允许根据预定义的条件来决定是否编译某段代码。#if 通常与 #define、#ifdef、#ifndef、#else 和 #endif 等指令一起使用。 基本语法 #if 条件表达式// 如果条件表达式为真,编译这部分代码 #else// 如果条件…...
【设计模式】策略模式(Strategy Pattern)详解
策略模式(Strategy Pattern)详解 一、策略模式的定义 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一组算法,将每个算法封装起来,并使它们可以相互替换,从而让算法的…...
Eclipse IDE for ModusToolbox™ 3.4环境通过JLINK调试CYT4BB
使用JLINK在Eclipse IDE for ModusToolbox™ 3.4环境下调试CYT4BB,配置是难点。总结一下在IDE中配置JLINK调试中遇到的坑,以及如何一步一步解决遇到的问题。 1. JFLASH能够正常下载程序 首先要保证通过JFLASH(我使用的J-Flash V7.88c版本)能够通过JLIN…...
修改git在提交代码时的名称
在git中,如果想修改提交代码作者的名字,可以进行以下操作: 1.在桌面或者文件夹内右击鼠标,点开Git Bash here。 2.进入后,通过git config user.name 回车查看当前名称。 3.通过git config --global user.name "…...
前端显示no data(没有数据,一片空白)
◎浏览器查看显示 message: "Request failed with status code 404", name: "AxiosError", code: "ERR_BAD_REQUEST" ◎后端gateway 模块显示: 无需验证,通行。/business/admin/save 显示正确的路径,但是没有返回结果…...
CCF编程能力等级认证GESP—C++7级—20250322
CCF编程能力等级认证GESP—C7级—20250322 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)图上移动等价消除 单选题(每题 2 分,共 …...
【Linux】深入解析Linux命名管道(FIFO):原理、实现与实战应用
本文承接上文匿名管道:【Linux】深度解析Linux进程间通信:匿名管道原理、实战与高频问题排查-CSDN博客 深入探讨Linux进程间通信(IPC),以匿名管道为核心,详细阐述其通信目的、实现前提及机制。涵盖数据传输…...
第十四届蓝桥杯省赛电子类单片机学习记录(客观题)
01.一个8位的DAC转换器,供电电压为3.3V,参考电压2.4V,其ILSB产生的输出电压增量是(D)V。 A. 0.0129 B. 0.0047 C. 0.0064 D. 0.0094 解析: ILSB(最低有效位)的电压增量计算公式…...
Python高效编程技巧与AI专用库:NumPy/Pandas数据处理与Matplotlib/Seaborn可视化实战
Python高效编程技巧与AI专用库:NumPy/Pandas数据处理与Matplotlib/Seaborn可视化实战 引言:Python高效AI开发的核心技能栈 在AI项目中,数据处理和可视化占据了70%以上的工作量。低效的代码会导致模型训练缓慢,而糟糕的数据可视化…...
vim的一般操作(分屏操作) 和 Makefile 和 gdb
目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图(可视)模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…...
生成器的应用 async与await实现
生成器配合使用函数 yield 将暂停执行代码,同时把函数返回值传递出去 function s(){console.log(ss); } function * f(){/*当 next() 调用时从头开始执行直到yield 开始检查后面的表达式现在是一个函数,那么首先执行函数当函数执行完毕,有返回值下面相当于 yield undefined*/…...
Apache Shiro 统一化实现多端登录(PC端移动端)
Apache Shiro 是一个强大且易用的Java安全框架,提供了身份验证、授权、密码学和会话管理等功能。它被广泛用于保护各种类型的应用程序,包括Web应用、桌面应用、RESTful服务、移动端应用和大型企业级应用。 需求背景 在当今数字化浪潮的推动下ÿ…...
NAT—地址转换(实战篇)
一、实验拓扑: 二、实验需求: 1.实现内网主机访问外网 2.实现外网客户端能够访问内网服务器 三、实验思路 1.配置NAT地址池实现内网地址转换成公网地址,实现内网主机能够访问外网。 2.配置NAT Sever实现公网地址映射内网服务器地址&…...
用HTML和CSS生成炫光动画卡片
这个效果结合了渐变、旋转和悬浮效果的炫酷动画示例,使用HTML和CSS实现。 一、效果 二、实现 代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&quo…...
Vue 3 + Composition API + Vite + Pinia + Element Plus 构建项目的完整指南
以下是使用 Vue 3 + Composition API + Vite + Pinia + Element Plus 构建项目的完整指南,包含 TypeScript 支持配置: 1. 创建项目 使用 Vite 初始化项目 npm create vite@latest my-vue-app -- --template vue-ts如果不需要 TypeScript,使用 --template vue 进入项目目录…...
FPGA_YOLO(三)
上一篇讲的是完全映射,也就是block中的所包含的所有的卷积以及归一,池化卷积 举例总共6个等都在pl侧进行处理(写一个top 顶层 里面conv 1 bn1 relu1 pool1 conv1*1 conv 2 bn2 relu2 pool2 conv1*1 ....总共6个 ),…...
