Ubuntu 20.04 基于终端的自启动程序
众所周知,RoboMaster 的比赛流程非常紧凑。
在某些极端情况下,留给战队整备的时间甚至只有几分钟。
这个时候,如果我们的视觉程序拥有自启动功能,就能节省出更多的调试时间。
经过几十分钟的学习,作者学会了一个基于终端的自启动方法,现在分享给大家。
本文测试环境:Ubuntu 20.04。
本方法的自启动流程是开机打开终端——终端内启动 shell 文件——通过 shell 文件启动视觉程序。
一、编辑 shell 文件
这里参考一下战队的自启动脚本。
主线程脚本(检查程序存活并重启程序)
1 |
|
分线程脚本(杀死首次启动的假死程序)[8]
1 |
|
二、设置自启动程序[1][2][3]
① 打开终端输入gnome-session-properties
,出现弹窗启动应用程序首选项。
② 点击添加,在命令一栏填写gnome-terminal -- bash -c "sh /home/sx/桌面/autostart.sh; exec bash"
。
③ 填写名称,以及可选的注释,最后保存即可。
三、一些 FAQ
注意:自启动脚本应以是否在开机后显示终端,且终端自动执行 shell 文件为准。
为便于测试,可直接在终端执行./autostart.sh
,检查脚本内命令是否正确。
开机后成功执行脚本,但程序显示找不到 OpenCV 共享库文件。
根据文章所述[7],需要在脚本中手动添加永久环境变量命令
source /opt/intel/openvino/bin/setupvars.sh
。开机前,NUC 已插入串口,但自启动脚本显示串口离线。
推测是串口权限未开启[4][5]。在脚本中添加命令
echo "123" | sudo -S chmod 777 /dev/ttyUSB0
。启动应用程序首选项中添加的自启动程序无法保存。
推测是权限问题[6]。请检查
~/.config/autostart
的所有者是否为root
(根用户)。后执行
sudo chown $UserName ~/.config/autostart
即可解决。
四、参考文章
- ubuntu20.04通过gnome-session-properties实现开机自启动shell脚本-CSDN博客 ↩
- ubuntu自启动脚本_gnome 自启动-CSDN博客 ↩
- How to autostart applications on Ubuntu 20.04 Focal Fossa Linux - LinuxConfig ↩
- 还在苦恼RM视觉开源代码怎么看?带你解读最近深大的视觉开源源码_rm开源-CSDN博客 ↩
- 解决Linux非root用户读写串口权限问题_root dialout-CSDN博客 ↩
- 无法更改启动应用程序首选项“无法保存/home/USER/.config/autostart/sideportrait.sh.desktop文件”-腾讯云开发者社区-腾讯云 ↩
- OpenVINO 2021.4 LTS 及旧版本编译安装方法 - KEKKJ BLOG - 小世界的一瞥 ↩
- 杀死 Linux 中无响应程序的 7 种方法 ↩