自动化编程 | 开机自启动并循环跑训练模型

2023年 8月 23日 42.7k 0

前言

笔者最近在一台机器上跑深度学习方面计算机视觉的模型,觉得等待训练的过程非常枯燥,而且如果它停下来了还得重新输入命令让它跑,于是就想写个脚本,设置开机之后它会自动开始运行这个程序,并且程序结束后又会自动重来。脚本编写的思路不难,具体实现也很简单。

项目介绍

由于本项目涉及到的系统类型、显卡、AI加速卡、模型代码等等都不属于通用范畴,所以在接下来的内容中会将敏感信息进行处理。读者可能没有办法直接应用其中的代码,但是思路都是通用的,可根据自身项目的实际情况进行修改。

项目在docker环境下运行,所以需要编写两个脚本,一个用于启动docker环境,一个用于设置在docker环境中的命令。

为什么不能写在同一个脚本中呢?因为启动docker的命令执行结束后就会退出docker环境,后续命令相当于是在裸机进行了。

方案实现

脚本1:repeatAndautostart.sh——让项目循环跑

思路:

  • while循环
  • 再次运行项目前需要把原来的engine文件删掉
#激活python环境和对应SDK环境,注意先后顺序
source /xx/python/bin/activate source /xxxsdk/sdk/env.sh 

#进入工作目录进行源码构建及运行测试 
cd 目录名

cd build/bin 
while : do
    rm /xxx/xxx.engine
    ./运行模型的可执行程序 -c ../../config/xxx/xxx.prototxt
done

脚本2:boot.sh——启动docker环境

xhost +
docker run --privileged --rm -it --name xxxdemo -e DISPLAY=$DISPLAY -e xxx_DEVICES=all -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -v /dl:/workspace -v /xx/sdk:/xxx/sdk -v /home/xxx/xxxdemo/footscript:/footscript demo:v3 /bin/bash /footscript/repeatAndautostart.sh

值得注意的是:

  • 不加-it参数,docker容器启动后又会退出
  • -v是挂载本地的目录到docker文件系统对应目录中
  • /bin/bash后接脚本路径2:启动docker后执行脚本1

开机自启动程序

开机自启动大致可分为两种类型,一是有界面的,二是无界面的。

我们属于有界面程序的启动,所以用desktop方式,可以打开一个终端模拟器;但如果没有任何命令运行它会很快退出,所以我们需要在此处写入运行脚本的路径

具体方式如下:

  • cd /etc/xdg/autostart 进入这个目录
  • sudo su 普通用户对这些文件只有只读权限,需进入root模式
  • vim test.desktop 打开一个新文件,这种方式修改后如果保存了就是生成新文件,不保存直接退出就不会有该文件

往test.desktop中写入如下代码:

[Desktop Entry] 
Name=test Exec=/usr/bin/x-terminal-emulator -e 'bash /home/xxx/xxxdemo/boot.sh'
Terminal=false 
Type=Application

重启后就会看到所有设置生效了。

参考资料

  • Linux设置软件开机自启动的三种方式(中标麒麟、银河麒麟、ubuntu)_linux如何开机自启有窗口的程序_从此开始低调范✌️的博客-CSDN博客

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论