crontab 执行sh时,sh文件中如果加入tail -f app.log 会造成tail进程一直在后台运行 .
crontab 配置如下:
*/5 * * * * /data/dpc/restart-inter-doris.sh
sh脚本如下:
#!/bin/bash
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
base_path=/data/dpc/jar
cd $base_path
./restart-doris-inter.sh
echo "启动 doris-dpcInterface-core-0.1.jar 完成!"
以上脚本启用了 ./restart-doris-inter.sh
#!/bin/bash
source /etc/profile
base_path=/data/dpc/jar
jar_name=doris-dpcInterface-core-0.1.jar
#jar启动日志名称
cd $base_path
PID=$(ps -ef | grep $jar_name | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
	echo  $jar_name is already stopped
else
	echo kill $PID
	kill -9 $PID
        sleep 5s
	echo ' $jar_name 停止服务完成'
fi
echo '启动服务...'
java -jar -Xmx2g -Xms2g $base_path/$jar_name &> /dev/null &
echo 启动 $jar_name 完成...
# 就是这句引起的
tail -f doris-dpcInterface-core-0.1.log
tail -f doris-dpcInterface-core-0.1.log 进程会每5分钟被执行一次而且无法退出最终会导致服务器文件打开数量过大,进而引起其它服务异常!
                
发表评论