linux定时检查jar包运行并重启

linux后台运行jar包,经常以外退出,定时计划运行sh检查jar包运行并重启

 

新建restart.sh

root@instance-1:~/sub#touch restart.sh

 

权限设置744(需要注意定时任务的用户有没有运行权限)

 

root@instance-1:~/sub#chmod 744 restart.sh

编辑restart.sh 文件:

#!/bin/sh
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH  
export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/tools.jar 
#java环境变量

log_file="restart_logs/server.log"


jar_prod="some-java-1.0.0-uber.jar"
jar_file=${jar_prod}
down_logs(){
	mkdir -p restart_logs
        dates=`date`
        echo -e "${dates}---${1} down! ${2} ..." >> ${log_file}
}
check_process(){
        ps -ef | grep ${1} |grep -v "grep"
        if [ $? -ne 0 ]
        then
                if [ -f ${2} ]
                then
 	               (java -jar ${2} &) && down_logs ${1} "restart :${3}"
                else
        	        down_logs ${2} "no java file"
                fi
#	else
#		down_logs ${1} "is running"
        fi
}

check_process ${jar_prod} ${jar_file} "${1}"

#echo -e "${PATH}" >> ${log_file}

 

定时任务,每小时检查jar包运行,如果退出重启

root@instance-1:~#crontab -e
* */1 * * * /bin/sh /root/sub/restart.sh

参考:crontab用户权限

另外2个shell

#!/bin/sh

#解压
mkdir /usr/java/
tar -zxvf server-jre-8u151-linux-x64.tar.gz -C /usr/java/

#配置java环境
echo -e "\n\n" >> /etc/profile
echo "#java" >> /etc/profile
echo "export JAVA_HOME=/usr/java/jdk1.8.0_151" >> /etc/profile
echo "export JRE_HOME=${JAVA_HOME}/jre" >> /etc/profile
echo "export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib" >> /etc/profile
echo "export PATH=${JAVA_HOME}/bin:$PATH" >> /etc/profile
source /etc/profile
ln -s /usr/java/jdk1.8.0_151/bin/java /usr/bin/java

#更快关闭不需要的TCP连接
#https://www.cnblogs.com/baihuitestsoftware/articles/13093517.html
#https://toutiao.io/posts/me0nza/preview
echo "#catcher h5 server" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_max_tw_buckets = 6000" >> /etc/sysctl.conf
#echo "net.ipv4.ip_local_port_range = 8000 9000" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
#echo "net.core.netdev_max_backlog = 1000" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_max_orphans = 1000" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_max_syn_backlog = 1024" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf
#echo "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 2" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time = 900" >> /etc/sysctl.conf
echo "net.ipv4.tcp_orphan_retries = 3" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf
echo "net.ipv4.tcp_retries2 = 5" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf
sysctl -p

#定时检查
chmod 777 restart.sh
crontab -l > /tmp/crontab.bak
echo '*/1 * * * * cd /root && /bin/sh restart.sh "check" 1>/dev/null 2>&1' >> /tmp/crontab.bak
crontab /tmp/crontab.bak
#!/bin/sh

backup_folder="backup"
jar_prod="some-java-1.0.0-uber.jar"
jar_file=${jar_prod}
new_jar_file="upload/${jar_file}"

#部署新的jar
new_server(){
	if [ -f ${new_jar_file} ]
	then
		backup

		kill_process

		mv_file
		sleep 1
		wait
	else
		echo "no ${new_jar_file}"
	fi

	sh check_catcher_free.sh "${1}"
}

#当前jar文件备份
backup(){
	mkdir -p ${backup_folder}
	dates=`date "+%Y%m%d_%H%M%S"`
	cp ${jar_file} ${backup_folder}/${jar_file}.${dates}

#wait for cp finish
	if [ $? -ne 0 ]
	then
		echo "cp $?"
		sleep 1
		wait
	fi
}

#杀掉当前进程
kill_process(){
	pid=$(ps x | grep ${jar_prod} | grep -v "grep" | awk '{print $1}')
	if [ -z "${pid}" ]
	then
		echo "${jar_prod} not running"
	else
		kill ${pid}
	fi
}

#从upload移动到当前目录
mv_file(){
	mv -f ${new_jar_file} ${jar_file}
#wait for mv finish
	if [ $? -ne 0 ]
	then
		echo "mv $?"
		sleep 1
		wait
	fi
}

new_server "${1}"
#kill_process

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值