如果你想让它在 Ubuntu 系统上实现 开机自启动,常用且简单的做法有两种:crontab 启动 和 systemd 服务。下面我详细说明两种方式:
方式一:使用 crontab 的 @reboot 任务(最简单推荐)
打开终端,输入:
bash
crontab -e
在最后一行加上(假设你想用当前用户身份启动):
bash
@reboot /bin/bash /完整路径/run_loader.sh
替换 /完整路径/run_loader.sh 为你实际的脚本路径。例如:
bash
@reboot /mnt/data/file-ngwyeoEN29l1M3O1QpdxCwkj
保存退出即可,重启系统后脚本就会自动运行。
注意事项:必须保证 run_loader.sh 具有可执行权限,如果没有请加上:
bash
chmod +x /mnt/data/file-ngwyeoEN29l1M3O1QpdxCwkj
方式二:用 systemd 制作服务(适合需要后台服务或 root 权限启动)
新建 service 文件
bash
sudo nano /etc/systemd/system/run_loader.service
输入如下内容(请根据实际脚本路径修改):
ini
[Unit]
Description=Run Loader Script
[Service]
Type=simple
ExecStart=/mnt/data/file-ngwyeoEN29l1M3O1QpdxCwkj
Restart=on-failure
User=你的用户名
[Install]
WantedBy=multi-user.target
保存退出后,执行:
bash
sudo systemctl daemon-reload
sudo systemctl enable run_loader.service
sudo systemctl start run_loader.service
查看状态:
bash
sudo systemctl status run_loader.service
总结
最简单:用crontab添加 @reboot 任务,适用于绝大多数桌面/开发场景。
更专业:用systemd编写服务,适用于长期在线的服务类脚本或希望有日志管理的场景。
不启动的常见问题
脚本没有可执行权限
脚本路径错误
脚本没有正确的shebang
脚本依赖的环境或文件不存在
权限不足,需要使用sudo来查看日志。请执行以下步骤来排查问题:
查看详细日志
bash
sudo journalctl -u run_loader.service -n 20
检查脚本基本信息
bash
检查脚本是否存在
ls -la /home/nvidia/trro-gateway-sdk-release-aarch64_v2.4/run_loader.sh
如果脚本存在,添加可执行权限
chmod +x /home/nvidia/trro-gateway-sdk-release-aarch64_v2.4/run_loader.sh
查看脚本内容的前几行(检查shebang)
head -5 /home/nvidia/trro-gateway-sdk-release-aarch64_v2.4/run_loader.sh
手动测试脚本
bash
切换到脚本目录
cd /home/nvidia/trro-gateway-sdk-release-aarch64_v2.4/
手动执行脚本,看是否有错误
./run_loader.sh
修改service文件
根据错误情况,可能需要修改service文件:
bash
sudo nano /etc/systemd/system/run_loader.service
修改为:
ini
[Unit]
Description=Run Loader Script
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/nvidia/trro-gateway-sdk-release-aarch64_v2.4/run_loader.sh
WorkingDirectory=/home/nvidia/trro-gateway-sdk-release-aarch64_v2.4
Restart=on-failure
User=nvidia
Group=nvidia
[Install]
WantedBy=multi-user.target
重新加载并启动服务
bash
sudo systemctl daemon-reload
sudo systemctl start run_loader.service
sudo systemctl status run_loader.service
## **``权限问题不启动 方案如下:**`
**方案一:修改service以root权限运行**
bash
sudo nano /etc/systemd/system/run_loader.service
修改为:
ini
[Unit]
Description=Run Loader Script
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/nvidia/trro219/run_loader.sh
WorkingDirectory=/home/nvidia/trro219
Restart=on-failure
RestartSec=10
User=root
Group=root
[Install]
WantedBy=multi-user.target
方案二:确认脚本的实际位置
bash
查看当前在哪个目录
pwd
查看脚本的完整路径
```bash
ls -la /home/nvidia/trro219/run_loader.sh
# 如果上面的路径不对,找到正确路径
find /home/nvidia -name "run_loader.sh" 2>/dev/null
重新启动服务
bash
```bash
sudo systemctl daemon-reload
sudo systemctl stop run_loader.service
sudo systemctl start run_loader.service
sudo systemctl status run_loader.service
查看服务日志
bash
sudo journalctl -u run_loader.service -f
方案三:如果还是不行,使用rc.local方式 bash
编辑rc.local
sudo nano /etc/rc.local
在exit 0之前添加:
cd /home/nvidia/trro219 && ./run_loader.sh &
确保rc.local可执行
sudo chmod +x /etc/rc.local
请先确认脚本的准确路径,然后按方案一修改service文件。如果您当前就在 /home/nvidia/trro219 目录下,那就使用这个路径。
验证开机自启动:
重启测试:
bash
sudo reboot
重启后检查服务状态:
bash
sudo systemctl status run_loader.service
日常维护命令:
```bash
bash
# 查看实时日志
```bash
sudo journalctl -u run_loader.service -f
查看最近日志
sudo journalctl -u run_loader.service -n 50
重启服务
sudo systemctl restart run_loader.service
停止服务
sudo systemctl stop run_loader.service
禁用开机自启动(如果需要)
sudo systemctl disable run_loader.service
当前状态确认:
🟢 服务运行状态:Active: active (running) - 正常运行中
🟢 开机自启动:enabled - 已启用
🟢 脚本执行:可以看到脚本正在处理TRRO服务冲突,这是正常的业务逻辑
配置完成总结:
✅ systemd服务文件已创建:/etc/systemd/system/run_loader.service
✅ 服务已启用开机自启动:sudo systemctl enable run_loader.service
✅ 服务当前正在运行:可以看到PID 54070在执行脚本
✅ 脚本路径正确:/home/nvidia/trro219/run_loader.sh
测试建议:
现在可以重启电脑来完整测试开机自启动:
bash
sudo reboot
重启后检查:
bash
sudo systemctl status run_loader.service
任务完成!





















暂无评论内容