shell脚本功能:
获取使用gpu的进程,通过长度判断有几个进程使用gpu,当有1个进程时,执行命令启动另一个进程
创建定时任务步骤:
编写定时任务:
crontab -e
编写内容(两个小时执行一次):
* */2 * * * /home/kluntech/YOLOV4-darknet-master/reconnectShell.sh
shell脚本:
#!/bin/bash
GPU_RUN_IDS=$(nvidia-smi -q -d PIDS | grep 'Process ID' | awk '{print $4}' | sort | uniq)
#echo 'ids:'${GPU_RUN_IDS}
#echo 'len:'${#GPU_RUN_IDS}
length_IDS=${#GPU_RUN_IDS}
#echo 'len:'${length_IDS}
if [ $length_IDS -gt 8 ]
then echo '>8:'1
else
cd /home/kluntech/YOLOV4-darknet-master/
CUDA_VISIBLE_DEVICES=1 nohup ./darknet detector demo phoneProject/obj.data phoneProject/yolo-obj.cfg yolo-obj_best.weights rtsp://guest:sg123456@172.19.54.22:554//Streaming/Channels/1 -thresh .90 -dont_show -videoout /sgvedio/zhongkong/
fi
遇到问题:
1.shell脚本单独执行成功,crontab执行不成功
查看crontab日志:
将日志设置为可见
vim /etc/rsyslog.d/50-default.conf
改为(去掉注释#):
cron.* /var/log/cron.log
查看日志命令:
less -10 /var/log/cron.log
2.crontab执行成功,但是脚本里面的命令执行失败
原因是由于路径问题,所以本人要执行命令,先进入目录(目录一定要绝对路径,绝对路径)
cd /home/kluntech/YOLOV4-darknet-master/
CUDA_VISIBLE_DEVICES=1 nohup ./darknet detector demo phoneProject/obj.data phoneProject/yolo-obj.cfg yolo-obj_best.weights rtsp://guest:sg123456@172.19.54.22:554//Streaming/Channels/1 -thresh .90 -dont_show -videoout /sgvedio/zhongkong/
最终成功。