平时有用到一些机器人或者带有ubuntu系统的移动设备,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控机等等,写好了程序后,如果想要运行,开机之后还得连接键盘鼠标,显示器,等程序运行之后还需要重新拔掉键盘鼠标显示器等等,步骤繁琐是一部分,还有可能因为反应不及时发生危险,尤其对于无人机等,因此需要配置程序开机自启动。
路径:系统设置–用户设置
可以创建test.sh文件,将程序所需要运行的指令全部加入sh文件中。
例如:
#! /bin/bash gnome-terminal -- bash -c "cd /home/xxx/Desktop/CSDN/test_demo/build;mkdir helloworld" & sleep 5 wait exit 0
说明:
chmod指令详细说明,请参考:【ubuntu】chmod命令
chmod 777 test.sh
gnome-session-properties是ubuntu的开机启动项管理器。如果之前编写的sh文件,不需要sudo权限,即可将sh文件加入gnome-session-properties自启动管理器中即可。
终端输入:gnome-session-properties
添加执行项目。其中command为你编写的脚本路径,name和comment可以随意配置。
有的时候,我们的设备连接外部设备,需要打开串口,甚至是gpio口,这需要使用到权限,串口可以通过添加rules来设置为普通用户,但是之前在DJIManifold产品上需要程序对GPIO口进行设置,这个时候就需要用到sudo权限了,因为在进入sudo权限需要输入密码,这就不好完成开机自启动。
此时就需要利用shell脚本自动输入密码
指令:echo "password" | sudo -S "./test.sh"
后续还需要做三步操作:
给文件运行权限
sudo chmod 777 start.sh
设置脚本自启动
gnome-session-properties
保持gnome-terminal窗口执行后不立刻关闭
在测试中会发现,gnome-terminal命令执行完会一闪而过,自行关闭。需要添加read命令,read命令是等待用户按下回车后使窗口关闭。
gnome-terminal -x bash -c "echo \"OK now\"; read"
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。