目录
- 前言
- 1.介绍
- 2.创建开机自启动程序
- 2.1 创建一个bash文件
- 2.2 创建一个service文件
- 2.3 添加权限
- 2.4 移动service文件
- 2.5 启动服务
- 2.6 停止/重启服务
- 2.7 取消开机自启动服务
- 结语
- 参考
前言
最近有个需求,需要在jetson nano开机自启动一个应用程序,最近看了几篇帖子,简单实现了其中一种,故此做个记录方便下次查看。此次使用的方法是systemd服务进程拉起方式,具体细节,大家自行查阅,这里只说明具体实现流程。
参考:Linux系统设置开机自动运行脚本的方法实例、Linux设置进程自启动(systemd,init)、Linux设置软件开机自启动的三种方式
1.介绍
这里实现一个部署在jetson nano上的yolov5算法程序的自启动功能,jetson nano每次开机后自动开启yolov5检测程序,PC端通过zmq实现远程画面显示。参考jetson nano模型部署、zmq远程画面显示
2.创建开机自启动程序
2.1 创建一个bash文件
首先需要创建一个bash文件start.sh,里面的内容为你需要拉起的可执行程序,比如我需要拉起yolov5检测程序,那么我的start.sh内容如下:
#! /bin/bash
cd /home/zhlab/tensorRT_Pro-main/workspace
./pro yolo
cd到指定目录,然后执行程序。大家可以执行bash start.sh检查下程序是否启动
2.2 创建一个service文件
创建一个service文件start.service,里面内容指定为你需要执行的bash文件的路径,比如我需要指定开机执行start.sh,那么我的start.service内容如下:
[Unit]
Description=Run a Custom Script at Startup
After=default.target[Service]
ExecStart=/home/zhlab/tensorRT_Pro-main/workspace/start.sh[Install]
WantedBy=default.target
大家只需要修改[Service]下的可执行bash文件的路径修改为你的路径即可,从服务的内容来看,我们最终还是会调用/home/zhlab/tensorRT_Pro-main/workspace/start.sh这个脚本
2.3 添加权限
为start.sh以及start.service添加权限
sudo chmod 777 start.sh
sudo chmod 777 start.service
2.4 移动service文件
大家需要将创建的start.service文件移动到/etc/systemd/system下,当然你也可以直接在/etc/systemd/system创建service文件,具体移动指令如下
sudo mv start.service /etc/systemd/system
2.5 启动服务
现在只需要启动服务然后重启即可,需要执行的指令如下:
systemctl daemon-reload
systemctl enable start.service // 启动刚才定义的service服务
sudo reboot // 重启
演示如下图所示,重新开机后会启动start.service服务,去执行start.sh文件,从而去执行yolov5检测程序
重新开机后可以使用如下指令查看服务是否开启
systemctl status start.service
此时可以看到服务的状态是active(running)即激活状态,现在可以在PC端通过zmq远程显示yolov5推理的画面了,如下图所示:
2.6 停止/重启服务
停止服务指令如下
systemctl stop start.service
systemctl restart start.service
上图演示了服务停止到服务重启的过程,可以看到服务状态的转变。
2.7 取消开机自启动服务
值得注意的是systemctl stop start.service只是停止了本次服务,但是当开机时服务又会重新启动,现在需要取消服务自启动,执行指令如下:
systemctl disable start.service // 取消自启动服务
sudo reboot // 重启
演示如下图
开机之后可以使用systemctl status start.service查看服务状态,会发现此时服务未启动,如下图所示
特别注意!!!大家一定要知道自己开启了哪些服务以及对应的服务的功能,不要多次启动同一个程序
结语
关于jetson nano的开机自启动程序大家可以自行测试,具体的细节需要各位自行查阅。
感谢各位看到最后,创作不易,读后有收获的看官帮忙点个👍。
参考
- Linux系统设置开机自动运行脚本的方法实例
- Linux设置软件开机自启动的三种方式
- Linux设置进程自启动(systemd,init)
- jetson nano模型部署