在Linux(以Ubuntu为例)中让脚本随系统启动,最常用且可靠的是 systemd服务 方式,以下是可直接实操的完整步骤和代码:

一、核心方法:创建systemd服务文件

1. 编写服务配置文件(以脚本  /home/yourname/startup_script.sh  为例):
bash

sudo nano /etc/systemd/system/auto_run_script.service
 
2. 粘贴以下内容(修改路径为你的脚本实际路径):
ini

[Unit]
Description=Auto run custom script on startup # 服务描述
After=network.target # 确保网络启动后再执行(可选,根据脚本需求调整)

[Service]
User=yourname # 执行脚本的用户(建议非root,填你的用户名)
WorkingDirectory=/home/yourname # 脚本工作目录
ExecStart=/bin/bash /home/yourname/startup_script.sh # 脚本执行命令
Restart=on-failure # 脚本失败时自动重启(可选)

[Install]
WantedBy=multi-user.target # 多用户模式下启动(兼容大多数场景)
 

二、启用并验证服务

1. 设置脚本可执行权限:
bash

chmod +x /home/yourname/startup_script.sh
 
2. 重载systemd配置并启动服务:
bash

sudo systemctl daemon-reload # 重新加载配置
sudo systemctl enable auto_run_script.service # 设置开机自启
sudo systemctl start auto_run_script.service # 立即启动服务
 
3. 验证服务状态:
bash

sudo systemctl status auto_run_script.service # 查看是否运行正常
 

  • 若显示  active (running)  则成功,失败可通过日志排查: sudo journalctl -u auto_run_script.service 

三、备用方法(适用于轻量场景):rc.local

1. 编辑rc.local文件:
bash

sudo nano /etc/rc.local
 
2. 在  exit 0  前添加脚本执行命令(需绝对路径):
bash

/bin/bash /home/yourname/startup_script.sh & # 末尾加&表示后台运行
exit 0
 
3. 设置权限并启用:
bash

sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local.service
 

关键注意事项

  • 脚本路径必须用 绝对路径(避免环境变量问题);
  • 若脚本需要访问网络/硬件,需在  After=  后添加对应依赖(如  network-online.target / udev.target );
  • 测试时可先执行  sudo systemctl start 服务名 ,确认脚本能正常运行后再设置开机自启。

需要我帮你根据具体脚本(如音乐播放脚本、种植环境监控脚本)生成定制化的systemd服务配置吗?

标签: none

添加新评论