前言
服务器本身很垃圾,是一个小鸡服务器,Java后端程序经常崩溃,所以用sh脚本简单的做一个自动重启命令
脚本
#!/bin/sh
#切换到目录
cd /usr/local/app
date=`date`
#查询端口占用
lsof -i:8080
# $? -ne 0 不存在 $? -eq 0存在
if [ $? -ne 0 ]
then nohup java -jar xxx.jar >/dev/null 2>&1 & echo $date ":=============== restart ===============" >> monitoring.log
else echo $date ":=============== is normal ==============" >> monitoring.log
fi
添加计时脚本
Linux crontab 命令
Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
添加或更新crontab命令
crontab -e
追加一条命令
每分钟执行脚本文件
* * * * * . /etc/profile;/bin/sh /usr/local/app/monitoring.sh
重启crond
service crond restart
查看当前系统登录用户的Crontab命令集合
crontab -l
注意
如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh
)又可以正常执行,这主要是因为无法读取环境变量的原因。
解决:在 crontab 中添加环境变量,在可执行命令之前添加命令 ./etc/profile;/bin/sh
,使得环境变量生效
评论区