在 Debian-Armbian 系统上,要让一个脚本(如 xxx.sh)在系统启动时自动运行,最现代和推荐的方法是使用 systemd 服务。
使用 Systemd 自动启动脚本
步骤 1: 确保脚本可执行并放置在合适的位置
首先,确保您的脚本 xxx.sh 具有正确的执行权限,并将其放在一个标准位置,例如 /usr/local/bin/。
# 假设您的脚本内容已经准备好
# 复制脚本到标准位置
sudo cp /path/to/your/xxx.sh /usr/local/bin/
# 赋予执行权限
sudo chmod +x /usr/local/bin/xxx.sh
步骤 2: 创建 Systemd Service 文件
您需要创建一个 .service 文件来定义如何运行您的脚本。
创建文件 /etc/systemd/system/xxx.service:
sudo nano /etc/systemd/system/xxx.service
将以下内容粘贴到文件中:
[Unit]
# 描述您的服务
Description=My Custom xxx Startup Script
# 指定在哪个服务之后启动 (例如,确保网络已配置)
After=network-online.target
[Service]
# 设置运行服务的用户 (例如 root)
User=root
# 设置脚本的工作目录 (可选)
WorkingDirectory=/usr/local/bin/
# 定义要执行的命令
# 确保使用绝对路径,即使定义了 WorkingDirectory
ExecStart=/usr/local/bin/xxx.sh
# 重启策略: 如果脚本以非零退出代码退出,则自动重启
# Restart=on-failure
# 重启之间的延迟
# RestartSec=5s
[Install]
# 指定服务应在系统启动时启动
WantedBy=multi-user.target
步骤 3: 启用和启动服务
创建服务文件后,您需要通知 systemd 有一个新的服务,并将其设置为开机自启。
# 1. 重新加载 systemd 配置,识别新的服务文件
sudo systemctl daemon-reload
# 2. 启用服务:设置服务在系统启动时自动运行
sudo systemctl enable xxx.service
# 3. 立即启动服务,进行测试
sudo systemctl start xxx.service
步骤 4: 验证服务状态
检查服务是否成功运行:
sudo systemctl status xxx.service
如果服务状态显示为 active (running),则表示设置成功。如果出现错误,请检查日志:
sudo journalctl -u xxx.service
