ubuntu系统设置开机自启动方法

如果你想让它在 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
任务完成!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容