Linux 简单弄一个自动启动脚本

前言

服务器本身很垃圾,是一个小鸡服务器,Java 后端程序经常崩溃,所以用 sh 脚本简单的做一个自动重启命令

脚本

1
2
3
4
5
6
7
8
9
10
11
#!/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 命令

1
crontab -e

追加一条命令

每分钟执行脚本文件

1
* * * * * . /etc/profile;/bin/sh /usr/local/app/monitoring.sh

重启 crond

1
service crond restart

查看当前系统登录用户的 Crontab 命令集合

1
crontab -l

注意

如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

解决:在 crontab 中添加环境变量,在可执行命令之前添加命令 ./etc/profile;/bin/sh,使得环境变量生效