这是 Fedora 16+ 的标准方法。
sudo vi /etc/systemd/system/myscript.service
[Unit]
Description=My Custom Startup Script
After=network.target
[Service]
Type=simple
ExecStart=/path/to/your/script.sh
User=yourusername
Restart=no
[Install]
WantedBy=multi-user.target
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启用开机启动
sudo systemctl enable myscript.service
# 启动服务(立即运行)
sudo systemctl start myscript.service
/usr/local/bin/mystartup.sh)#!/bin/bash
# 你的启动命令
echo "My startup script is running" > /var/log/mystartup.log
# 例如:启动某个程序
# /path/to/your/program &
chmod +x /usr/local/bin/mystartup.sh
Fedora 16 默认没有 rc.local,但可以启用:
sudo vi /etc/rc.d/rc.local
添加你的脚本内容,例如:
#!/bin/bash
/path/to/your/script.sh
exit 0
sudo chmod +x /etc/rc.d/rc.local
sudo systemctl enable rc-local.service
对于用户特定的脚本(登录后运行):
mkdir -p ~/.config/autostart
vi ~/.config/autostart/myscript.desktop
内容示例:
[Desktop Entry]
Type=Application
Name=My Startup Script
Exec=/home/username/scripts/mystartup.sh
Hidden=false
X-GNOME-Autostart-enabled=true
# 编辑当前用户的 crontab
crontab -e
添加一行:
@reboot /path/to/your/script.sh
查看日志
# 查看 systemd 服务日志
sudo journalctl -u myscript.service
sudo journalctl -f # 实时查看日志
检查服务状态
sudo systemctl status myscript.service
测试脚本
# 直接运行测试
sudo /path/to/your/script.sh
chmod +x)
路径问题:在脚本中使用绝对路径
环境变量:systemd 服务默认环境有限,可能需要在服务文件中设置环境变量
依赖顺序:使用 After= 和 Requires= 确保正确的启动顺序
注意:Fedora 16 已于 2013 年停止支持,建议升级到更新的版本以获得更好的安全性和功能支持。