2.3 ubuntu自启动shell脚本

本文详细介绍了如何编写和设置Shell脚本来实现Ubuntu系统的QT应用和ROS2节点的自启动。内容包括创建和编辑Shell脚本,赋予文件执行权限,设置开机自启动以及如何管理和关闭自启动脚本的运行。此外,还提供了视觉自启动和ROS2相关自启动脚本的示例。
摘要由CSDN通过智能技术生成

 赶紧去学shell语法,简单的东西都不学你要学什么?

shell脚本的学习-CSDN博客

 一、QT自启动脚本

ubuntu自启动shell脚本运行qt的c++文件

项目文件为 first ,编译,然后运行,然后检测是否有进程产生

流程:

创建并编辑一个名为“run.sh”的Shell脚本文件

gedit run.sh

并添加以下内容:

#!/bin/bash    
echo "Start vision code"  
cd /home/ldy/programs/build-first-Desktop_Qt_5_14_2_GCC_64bit-Debug
make clean && make -j
./first          

请注意,您需要将“cd /home/ldy/programs/build-first-Desktop_Qt_5_14_2_GCC_64bit-Debug ”替换为您的c++项目的Debug文件路径,first为项目的名称。

echo为在终端输出提示文字,make clean 是清除文件 ,make -j 是编译文件, ./first是运行工程文件

保存并关闭“run.sh”文件。

  • ctrl + o: 保存内容(但是不会退出,还可以继续编辑)
  • ctrl + x: 保存并且退出。    按y保存到缓冲区,然后按回车键退出。

授予“run.sh”文件可执行权限。

在终端中,使用以下命令:

chmod 777 run.sh

运行脚本文件

./run.sh

看运行脚本后C++文件是否有输出,有输出说明脚本没问题

开机自启动运行脚本

打开ubuntu自带的应用:启动应用程序,然后添加 自启动程序,名称随便取,命令就是执行的脚本路径   ,保存 ,然后重启,看看脚本会不会自启动

如果脚本没有自启动,就到  /home/用户名/.config/autostart  目录下,找到刚才自启动脚本的名称,如run.sh.desktop  。然后双击进入修改 ,把    Exec=/home/用户名/run.sh    改成 Exec= /bin/bash  /home/用户名/run.sh

开机自启动后如何关闭当前脚本的运行

执行终端命令

pkill run.sh

pkill first  #关闭代码运行

如何关闭不了,就强制关闭运行的脚本

pkill -9 -f run.sh

pkill first 

如何取消脚本开机自启动

启动应用程序 中 取消勾选 或 删除run.sh.desktop文件,或去删除run.sh都行

视觉自启动

      
echo "Start vision code"                             
src=3                                           
cnt=0                                                   
name=Vision_optimize
cd /home/eihu/Vision_Optimize/build-uVision_optimize-Desktop_Qt_5_14_2_GCC_64bit-Debug/
make clean && make -j                                    #清除,编译

while [ 1 ]                    
do
count=`ps -ef | grep $name | grep -v "grep" | wc -l`     #返回目标进程数量(正常是2)

if [ $count -gt 1 ]; then                                #如果进程数>1则表示程序运行正常
	sleep $src
else                                                      
	
    gnome-terminal -x bash -c "./$name;exec bash;"       #打开一个新的终端,运行程序
	
	sleep $src                                           #延时sec秒
	((cnt=cnt+1))                                        #cnt自加1
	if [ $cnt -gt 9 ]; then                              #如果cnt>9,关闭脚本
	pkill -9 -f run.sh
    pkill Vision_optimize
	fi
fi
done

ROS2自启动脚本

echo "Start nav2 code"                             
cd /home/feihu/shaobing/feihu
source /opt/ros/humble/setup.bash
source /home/feihu/shaobing/feihu/src/install/setup.bash

 commands=(

"gnome-terminal -- bash -c ' ros2 launch robot_description display_rviz2.launch.py ; exec bash;'"
"gnome-terminal -- bash -c ' ros2 launch pointcloud_to_laserscan pointcloud_to_laserscan_launch.py ; exec bash;'"
"gnome-terminal -- bash -c ' ros2 launch linefit_ground_segmentation_ros segmentation.launch.py ; exec bash;'"
"gnome-terminal -- bash -c ' ros2 launch imu_complementary_filter complementary_filter.launch.py  ; exec bash;'"
"gnome-terminal -- bash -c ' ros2 launch livox_ros_driver2 msg_MID360_launch.py   ; exec bash;'"
"gnome-terminal -- bash -c ' ros2 launch fast_lio mapping.launch.py    ; exec bash;'"
#"sleep 1"
#"gnome-terminal -- bash -c 'ros2 launch robot_navigation2 navigation2.launch.py ; exec bash;'"
)



for command in "${commands[@]}"; do
  
  eval "$command"

done



sleep 2
#单独运行决策节点,并保存终端的输出为日志
ctime=$(date +"%Y-%m-%d_%H-%M-%S")
file_name="output/${ctime}.log"
cd /home/feihu/projects/fish
source  install/setup.bash
gnome-terminal -- bash -c "ros2 run decision decision > ${file_name} 2>&1; exec bash;"
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小艺

如果文章对你有用,请我喝咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值