键盘国治理专家 2022-11-22 16:13 采纳率: 50%
浏览 4
已结题

linux定时任务失败

从网上摘抄了一段监听进程的sh代码,但一直无法重启成功

这份文件是listenAndStartMyWatcher.sh


#!/bin/bash
st_dir=`echo ~`
#echo $host_dir
proc_name="MyWatcher.jar"
file_name="/usr/liyunpeng/listenAndStartMyWatcher.log"
startMyWatcherLog="/usr/liyunpeng/startMyWatcher.log"
pid=0

proc_num()
{
        num=`ps -ef |grep -w ${proc_name} | grep -v grep | wc -l`
        return $num
}

proc_id()
{
        pid=`ps -ef |grep -w ${proc_name} | grep -v grep | awk '{print $2}'`
}

proc_num
number=$?
echo 'number='${number} >> ${file_name}

if [[ ${number} -eq 0 ]]
then
        echo '进程死了'
        echo 'WARNING 进程死了,开始重启====='`date`>> $file_name
        /bin/bash /usr/liyunpeng/startMyWatcher.sh >> ${file_name}
        #这个result会返回127 或者完全没有值返回
        echo 'result='$? >> ${file_name}
  
        if [[ ${result} -gt 0 ]]
        then
                echo '['`date`' warning]重启成功=====' >> $file_name
        else
                echo '['`date`' erro]重启失败=====' >> $file_name
        fi
else
        proc_id
        echo '['`date`' info]别慌,他还活着pid:'${pid} >>$file_name
fi

在crontab -e里是这样的

*/1 * * * *  /usr/liyunpeng/listenAndStartMyWatcher.sh

会每隔1分钟,就去检查这个进程是否在运行

这是我的startMyWatcher.sh文件内容
#!/bin/bash
jar_name=/usr/liyunpeng/MyWatcher.jar
jar_log_name=/usr/liyunpeng/MyWatcher.log
nohup java -jar ${jar_name} > ${jar_log_name} &
运行结果及报错内容

无法重启成功,事实上startMyWatcher就是一个简单的重启命令,但我不明白为什么没重启成功

我的解答思路和尝试过的方法

如上面代码所示

我想要达到的结果

能够通过定时任务去实现,这个java进程的永生

  • 写回答

5条回答 默认 最新

  • 键盘国治理专家 2022-11-26 21:57
    关注

    已解决,是由于我的java -jar没有把java配置成绝对路径,我把所有能用绝对路径的地方都用上了绝对路径。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月22日

悬赏问题

  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作