一、systemd 服务(主流方法)
适用于使用systemd的现代发行版(Ubuntu 16.04+/CentOS 7+)
- 创建服务文件
sudo nano /etc/systemd/system/your_script.service
- 写入服务配置(示例):
[Unit]
Description=My Custom Script
After=network.target
[Service]
ExecStart=/path/to/your_script.sh
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
- 设置权限并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable your_script.service
- 验证服务状态:
systemctl status your_script.service
二、rc.local 方式(传统方法)
适用于仍支持rc.local的系统(Ubuntu 18.04前/CentOS 6)
- 编辑rc.local文件:
sudo nano /etc/rc.local
- 在
exit 0
前添加执行命令:
/path/to/your_script.sh &
- 设置可执行权限:
sudo chmod +x /etc/rc.local
三、cron 定时任务
适用于所有Linux系统(用户级启动)
- 编辑当前用户的crontab:
crontab -e
- 添加启动指令:
@reboot /path/to/your_script.sh
四、图形界面配置(桌面环境)
适用于GNOME/KDE等桌面环境
- 搜索启动应用程序(Startup Applications)
- 点击添加 → 输入名称和脚本路径
- 支持设置延迟启动和初始工作目录
五、注意事项与调试
脚本要求:
- 必须具有可执行权限:
chmod +x your_script.sh
- 使用绝对路径(启动时环境变量不同)
- 避免使用交互式命令
- 必须具有可执行权限:
日志查看:
# systemd服务日志
journalctl -u your_script.service -b
# 通用启动日志
dmesg | grep "启动关键词"
- 服务管理命令:
# 禁用服务
sudo systemctl disable your_script.service
# 临时运行测试
sudo systemctl start your_script.service
- 优先级建议:
✅ 推荐使用systemd方案(支持依赖管理、错误重启)
⚠️ 慎用rc.local(部分新系统默认禁用)
🖥️ 桌面程序建议用图形界面配置
六、故障排查流程
- 检查服务状态:
systemctl status your_service
- 测试手动运行:
sudo /path/to/script.sh
- 查看日志文件:
journalctl -xe
- 检查脚本权限和路径
- 确认执行环境变量是否完整
选择最适合您系统环境的方法,建议优先使用systemd方案以获得最佳兼容性和管理功能。