赶紧去学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;"
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐