Linux 实现脚本开机自启动

Ubuntu 22.04、CentOS 8.5

vim /lib/systemd/system/rc-local.service

作用:在系统启动的最后阶段,自动查找【指定路径】下的脚本进行执行

脚本路径一般为:/etc/rc.local、/etc/rc.d/rc.local

[Unit]
# 描述:兼容/etc/rc.d/rc.local的服务
Description=/etc/rc.d/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)

# 运行条件:指定文件存在并且具有可执行权限,服务才会被激活
ConditionFileIsExecutable=/etc/rc.d/rc.local

# 运行条件:网络就绪后运行
After=network-online.target
Wants=network-online.target

[Service]
# 服务类型:forking表示脚本会启动一个后台守护进程
Type=forking

# 服务启动命令:运行脚本
ExecStart=/etc/rc.d/rc.local start

# 超时设置:0表示没有超时限制
TimeoutSec=0

# 当脚本进程退出后,服务状态仍保持为“active”(适合只运行一次的脚本)
RemainAfterExit=yes

# 不尝试猜测主进程ID,与Type=forking 和 RemainAfterExit=yes 配合使用
GuessMainPID=no

vim /etc/rc.d/rc.local

作用:自定义需要运行的脚本

#!/bin/bash
# 这个脚本将在系统启动时执行

# 示例:启动一个自定义的 Python 脚本
/usr/bin/python3 /opt/my_custom_service.py > /root/log/my.log 2>&1 &

# 确保脚本以退出码 0 结束,表示成功
exit 0

 设置自动启动

  • 启用(开机自启): systemctl enable rc-local.service

  • 立即启动: systemctl start rc-local.service

  • 查看状态: systemctl status rc-local.service

适用场景

  • rc-local.service:非常适合运行一些简单的、一次性的、非关键的启动任务
  • 创建一个自定义的 systemd service文件:可以获得更精细的控制(依赖关系、资源管理、日志集成、自动重启等),适合复杂服务
posted @ 2025-04-11 11:53  Fēngwèi  阅读(345)  评论(0)    收藏  举报