Linux使用定时任务监控java进程并拉起

需求描述:

设计一个脚本,通过Linux定时任务,每分钟执行一次,监控jar包进程是否存在,存在则不做动作,不存在则重新拉起jar包程序。

定时任务配置:

*/1 * * * * bash -x /root/myfile/jars/check_status_job.sh

脚本内容:

#!/bin/env bash

#重新加载环境变量,解决java命令不存在的问题。
. /etc/profile

val="springboot-8053.jar";
  
ids=`ps -ef | grep "$val" | grep -v "grep" | awk '{print $2}'`;
echo $ids;

if [[ -z $ids ]];then
	echo	"进程不存在,已被重新拉起!";
	nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/$val > /root/myfile/jars/default.out 2>&1 &
	nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jarsxxxx/$val > /root/myfile/jarsxxxx/default.out 2>&1 &
else
	echo	"进程存在,无须拉起!";
fi

通过以上配置,就可以实现需求。

遇到的问题及排查过程:

1、java命令不存在问题

在这里插入图片描述

排查:

首先,确认自己是root账号配置的cron,并且,执行了命令检查java是否存在
在这里插入图片描述
发现是存在的,java环境变量也是配置了的。
郁闷了,那为什么cron会无法识别到了?
于是,请教了大佬,排查过程如下:
首先,这个问题的本质是,cron执行shell脚本时,环境变量没加载,cron会清空环境。
通过一下命令排查:

cat ~/.bashrc
cat ~/.bash_profile
which java
grep -r jdk /etc/profile*

以上命令执行结果截图:
通过
从而确定,是cron没有读取到自己配置的java环境变量。
于是,在脚本最开始,加载一下环境变量,解决该问题。

#重新加载配置的环境变量
. /etc/profile

2、程序日志输出到default的问题。

输出到日志的方法有很多种,大致思路就是,nohup重定向到default文件。
类似命令:

nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/springboot.jar > default.out 2>&1 &

但是,我的cron命令是:

bash -x /root/myfile/jars/check_status_job.sh

这样,可以看到shell脚本的运行步骤,方便排查脚本问题。
于是日志输出如下:
在这里插入图片描述
你会发现, > 重定向后的部分,没有构建到命令里。
这让初学者的我,傻眼了,我以为,日志打印的命令没构建全,那么,default肯定没法生成。
然后去脚本目录/root/myfile/jars/查看default.out文件,也确实没创建。
于是,我错误的认为,命令构建出错,导致default.out没能生成。

排查:

召唤大佬:

1default 默认生成在 /root 下
2、ls ~root		查看该目录下的文件有哪些
3、想要指定目录,就加绝对路径

在这里插入图片描述
发现,确实生成了default.out日志文件。
于是,重新构建我的nohup启动命令:

nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/$val > /root/myfile/jarsxxxx/default.out 2>&1 &

这样,就可以在我指定的目录中生成日志文件了。
另外这里是覆盖重定向>,这样,每次重启后,default.out都是重新覆盖。从而,保证日志不会无限扩大。并且,shell脚本的日志,不会输出到default.out中。

补充:

另外一种日志输出的方法是,通过cron配置,把脚本日志全部输出到default.out里面
命令如下:

*/1 * * * * bash -x /root/myfile/jars/check_status_job.sh >> /root/myfile/jars/default.out 

这个办法不太好,会把shell脚本的日志和jar程序的日志都输出到default.out中,另外,这里只能用追加重定向>>,会导致日志文件无限扩大,不方便排查。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值