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

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

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

将以下内容复制进去,

cpp 复制代码
[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脚本,我将一个挂载命令写在了里面
cpp 复制代码
#!/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 赋予执行权限
cpp 复制代码
sudo chmod +x /etc/rc.local
1.4 启用rc-local服务
cpp 复制代码
# 在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 验证效果,在电脑开机之后,查看是否生成了日志文件:
cpp 复制代码
cat /usr/local/startup.log

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

参考博客:

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

相关推荐
Rabitebla3 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
火云代理3 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
威嵌神州4 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
火云代理7 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖7 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump8 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风9 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府9 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT10 小时前
【RHCA+】IO调度算法
linux·服务器
wacsii10 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器