当前位置: 首页 > news >正文

linux_系统开机自动执行shell脚本

创建systemd服务单元,systemd通过“服务单元文件”管理所有开机任务。我们要创建一个专门负责调用rc.local的服务。

1.1 新建服务定义文件
sudo vim /etc/systemd/system/rc-local.service

将以下内容复制进去,

[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target

这段配置的意思是:

  • Description:给服务起个名字,方便识别;
  • ConditionPathExists:只有当/etc/rc.local文件真实存在时,才启用这个服务;
  • Type=forking:告诉systemd,这个脚本会自己“分叉”成后台进程(兼容传统rc.local行为);
  • ExecStart:真正要执行的命令,即运行/etc/rc.local start;
  • RemainAfterExit=yes:即使脚本执行完退出了,systemd也认为服务仍在运行——这是关键,否则systemd会误判为失败。
1.2 编写并配置rc.local脚本,我将一个挂载命令写在了里面
#!/bin/sh -e echo "Linux系统开机自启脚本已成功运行于 $(date)" > /usr/local/startup.log mount -t nfs 192.168.0.99:/home/share/mnt_data /mnt/99_share exit 0
  • 第一行#!/bin/sh -e:强制使用POSIX shell,并在遇到错误时立即退出;
  • echo行:记录一条带时间戳的日志,用于后续验证;
  • exit 0:必须有!表示脚本执行成功。缺了它,systemd会认为启动失败。
1.3 赋予执行权限
sudo chmod +x /etc/rc.local
1.4 启用rc-local服务
# 在systemd启动时,自动将rc-local.service加入multi-user.target的依赖链。相当于给服务挂了个“开机闹钟” sudo systemctl enable rc-local # 立即启动服务 sudo systemctl start rc-local.service # 检查服务状态 sudo systemctl status rc-local.service
1.5 验证效果,在电脑开机之后,查看是否生成了日志文件:
cat /usr/local/startup.log

成功!这证明整个链路——systemd → rc-local.service → /etc/rc.local → echo命令——全部打通。

参考博客:

新手必看:如何让Linux系统开机自动执行Shell脚本-CSDN博客

http://www.jsqmd.com/news/940862/

相关文章:

  • 2026年6月最新视频转文字工具横评:格镜凭什么成为全网第一?
  • 重庆朝天门名表回收横评|诚鑫名品联盟等6家商家解析 - 诚鑫名品
  • 终极指南:如何用AI瞄准助手在3分钟内提升你的游戏瞄准精度
  • 用立创GD32E230开发板实现呼吸灯:深入理解GPIO输出模式与速度配置
  • 伯克利数据科学通识教育:从零基础到跨学科应用实践
  • Unity视频播放避坑指南:从VideoPlayer组件到UI RawImage的完整流程(含常见报错解决)
  • Vue3 + Three.js 实战:手把手教你加载炫酷的小米SU7 3D模型(附完整代码)
  • 千方科技:双轮驱动开启干线物流自动驾驶商业化新篇章
  • 打造你的第二大脑:16个专业Obsidian模板让知识管理变得简单高效
  • 2026年6月北京老房翻新装修公司推荐:十大排名老房安全评测专业价格注意事项 - 品牌推荐
  • 别再只会拖控件了!用Qt Designer的样式表,5分钟搞定PyQt5按钮的圆形、渐变色和悬停效果
  • WzComparerR2终极指南:冒险岛WZ文件提取与数据分析完整教程
  • 决策树特征选择实战:用信息增益帮你选出‘最佳提问’(Python/Sklearn版)
  • UE5 VR项目避坑指南:Interaction Component里的Select与Grab组件,别再乱配了!
  • 2026年6月抛丸机厂家推荐:TOP5排名专业评测大工件清理价格特点 - 品牌推荐
  • 新手福音:通过快马生成的nexus桌面便签插件代码轻松入门前端开发
  • 行业权威认证:Bitdefender 四年蝉联Gartner®端点保护魔力象限 “远见者”
  • 2026年论文降AI率工具深度横评:谁才是硕博毕业的“救命稻草“?
  • AI大模型正在悄悄改变每一个普通人的命运,你还要装作看不见吗?
  • 计算机毕业设计之基于Hadoop的京东空调销售数据分析与可视化
  • 详解SMT贴片生产工艺
  • Computex上我亲眼看到:程序员的“对手“已经不是人类了
  • 2026年6月抛丸机厂家推荐:TOP5排名专业评测重型装备清理案例价格 - 品牌推荐
  • 从‘删库跑路’到精准操作:手把手教你用jQuery的DOM方法(append, remove, empty)玩转动态网页
  • UE5 GAS实战:如何用GameplayTag和委托,在UI上优雅地显示“喝药回血”这类状态效果?
  • 2025-2026年国内十大企业管理咨询公司排行榜推荐:TOP10评测适用场景与注意事项特点 - 品牌推荐
  • AI备课效率提升300%?揭秘一线教师正在悄悄使用的5款合规AI教学助手
  • Bresenham画圆算法在单片机ILI9806G屏幕上的移植指南:从公式推导到打点函数封装
  • 如何让微信在手机和平板同时登录?WeChatPad为你提供智能解决方案
  • 告别单设备束缚:WeChatPad开启微信双端同步新时代