ubuntu开机后ROS程序自启动问题


Posted in Servers onDecember 24, 2022

平时有用到一些机器人或者带有ubuntu系统的移动设备,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控机等等,写好了程序后,如果想要运行,开机之后还得连接键盘鼠标,显示器,等程序运行之后还需要重新拔掉键盘鼠标显示器等等,步骤繁琐是一部分,还有可能因为反应不及时发生危险,尤其对于无人机等,因此需要配置程序开机自启动。

一、ubuntu免密开机

路径:系统设置–用户设置

ubuntu开机后ROS程序自启动问题

二、程序脚本启动

可以创建test.sh文件,将程序所需要运行的指令全部加入sh文件中。

例如:

#! /bin/bash
gnome-terminal -- bash -c "cd /home/xxx/Desktop/CSDN/test_demo/build;mkdir helloworld" & sleep 5
wait
exit 0

说明:

  • gnome-terminal --bash -c:会打开一个新的bash终端并执行c后面的语句。linux bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令;Bash还能从文件中读取命令,这样的文件称为脚本。语句用’;;’,隔开,最后的sleep 5表示延迟5秒退出,这样就可以在新的终端看到运行效果,添加这个延时是为了方便验证是否启动程序或者节点
  • 如果是ubuntu 18.04以前的系统:gnome-terminal -x bash -c;ubuntu18.04以后的系统输入:gnome-terminal – bash -c
  • gnome-terminal --tab:同一终端窗口中打开一个新选项卡。而是打开一个新窗口。

三、文件赋予权限

chmod指令详细说明,请参考:【ubuntu】chmod命令

chmod 777 test.sh

四、开机启动项管理器

gnome-session-properties是ubuntu的开机启动项管理器。如果之前编写的sh文件,不需要sudo权限,即可将sh文件加入gnome-session-properties自启动管理器中即可。

终端输入:gnome-session-properties

ubuntu开机后ROS程序自启动问题

添加执行项目。其中command为你编写的脚本路径,name和comment可以随意配置。

ubuntu开机后ROS程序自启动问题

五、需要SUDO权限的脚本开机自启动

有的时候,我们的设备连接外部设备,需要打开串口,甚至是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"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
nginx简单配置多个server的方法
Mar 31 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
Nginx部署vue项目和配置代理的问题解析
Aug 04 Servers
nginx.conf配置文件结构小结
Apr 08 Servers
nginx配置之并发频次限制
Apr 18 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
在容器中使用nginx搭建上传下载服务器
May 11 Servers
Nginx限流和黑名单配置
May 20 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
Aug 14 Servers
ubuntu端向日葵键盘输入卡顿问题及解决
Dec 24 #Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 #Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
Dec 24 #Servers
keepalived + nginx 实现高可用方案
Dec 24 #Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 #Servers
ubuntu如何搭建vsftpd服务器
Dec 24 #Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 #Servers
You might like
BBS(php & mysql)完整版(八)
2006/10/09 PHP
PHP学习 变量使用总结
2011/03/24 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
python机器学习之神经网络(三)
2017/12/20 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
Django的Modelforms用法简介
2019/07/27 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python实现爬取并分析电商评论
2020/06/19 Python
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
采购部部长岗位职责
2014/02/06 职场文书
网络宣传方案
2014/03/15 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2014年转正工作总结
2014/11/08 职场文书
国庆节慰问信
2015/02/15 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
交通安全月活动总结
2015/05/08 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python