shell脚本功能:
获取使用gpu的进程,通过长度判断有几个进程使用gpu,当有1个进程时,执行命令启动另一个进程
创建定时任务步骤:
编写定时任务:crontab -e编写内容(两个小时执行一次):* */2 * * * /home/kluntech/YOLOV4-darknet-master/reconnectShell.sh
shell脚本:
#!/bin/bashGPU_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:'1elsecd /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/
最终成功。