判断程序是否运行,断开重新运行,并记录的shell脚本

运行某个python程序,老是自动断开。导致浪费训练时间。

解决办法:写一个脚本,每隔一段时间判断python程序的进程是否在运行,不运行的时候重新运行;运行时将判断操作写入日志中。

status.sh脚本

#!/bin/bash
  
while true   # 无限循环
flag=`ps -aux |grep /home/data1/HRNet/tools/train_2stage_1.py |grep -v "grep" |wc -l`
do
        if [ $flag -eq 0 ]   # 判断进程数如果等于0,则启动python程序
        then
                echo `date` - "/home/data1/HRNet/tools/train_2stage_1.py restart" >> running.log   # 将重启时间写入自定义的日>
志文件
                nohup python /home/data1/HRNet/tools/train_2stage_1.py &   # 启动python程序
        else
                echo `date` - "/home/data1/HRNet/tools/train_2stage_1.py is running..." >> running.log
        fi
        sleep 10m  # 延迟10分钟后进入下次循环
done

终端运行指令:

nohup sh status.sh &

会生成两个文件nohup.out和running.log

注意:sh线程和脚本中的python运行程序的进程是两个不同的进程,使用ps -ef可以查询到两个进程有不同的PID。参考:Linux中的程序和进程,PID和PPID_洋羽翔_hisen-CSDN博客_ppid

关闭的时候需要把上述两个进程都kill掉。查找对应PID,kill PID。

终端实时显示运行日志:

tail -n +1 -f nohup.out

用到的指令:

nohup cmd &

使用&后台运行程序:

  • 结果会输出到终端

  • 使用Ctrl + C发送SIGINT信号,程序免疫

  • 关闭session发送SIGHUP信号,程序关闭

使用nohup运行程序:

配合使用

平日线上经常使用nohup&配合来启动程序nohup ./test &

  • 同时免疫SIGINTSIGHUP信号

一分钟了解nohup和&的功效_偷懒的加菲-CSDN博客_nohup

tail

从文件第一行开始在终端显示文件,并动态刷新。

Linux tail 命令 | 菜鸟教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值