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分钟被执行一次而且无法退出最终会导致服务器文件打开数量过大,进而引起其它服务异常!
发表评论