#!/bin/bash
. /etc/profile
tomcatPath="/usr/local/tomcat"
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath"
pid=`ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]tomcat进程为:$pid"
echo "[info][$(date +'%F %H:%M:%S')]tomcat已经启动,准备使用shutdown命令关闭..."
$binPath"/shutdown.sh"
sleep 5
pid=`ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭失败,准备kill进程..."
kill -9 $pid
echo "[info][$(date +'%F %H:%M:%S')]kill进程完毕!"
sleep 1
else
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭成功!"
fi
else
echo "[info][$(date +'%F %H:%M:%S')]tomcat未启动!"
fi
echo "[info][$(date +'%F %H:%M:%S')]准备启动tomcat..."
sleep 5
$binPath"/startup.sh"
1.上面是重启启动脚本,先shutdown,停顿5秒 如果没有用就直接kill掉,等待5秒 后重新启动 . /etc/profile 等于 source /etc/profile
2.crontab -l 查看定时任务,crontab -e 编辑定时任务 添加下面内容到里面,这样天凌晨1点就会执行
# 定时重启tomcat
00 01 * * * /root/restart.sh > /root/restart-tomcat.txt
# 定时删除tomcat/logs/ 下的7天前日志
00 02 * * * find /data/apache-tomcat-7.0.68/logs/ -type f -mtime +7 | xargs rm -rf &>/dev/null
3.如果没生效 重启下 systemctl restart crond.service
4. 使用find查询7天前更改的日志文件 并删除
# 使用find查询7天前更改的日志文件 并删除
find ./ -type f -mtime +7 | xargs rm -rf &>/dev/null
- 补充一个 nginx 日志分割的脚本 只要添加到 定时任务中即可分割
#!/bin/bash
LOG_PATH="/usr/local/nginx/logs"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
echo $RECORD_TIME
PID=/usr/local/nginx/logs/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
# 向Nginx主进程发送信号,重新打开日志文件
kill -USR1 `cat $PID`