Linux定时分隔springboot项目服务日志
根据进程查询启动脚本位置,以及查询服务启动输出的文件
Step1:查看进程id
输入ps或ps -ef |grep java
Step1:查看进程id
Step2:查看标准输出
切换到/proc//fd下,目录中的每一项都是一个符号链接,指向打开的文件,数字则代表文件描述符。其中1 = stdout, 2 = stderr
打开启动脚本位置:cd /proc//cwd
查看启动脚本位置: ll /proc//cwd
第一种(已测试):
#!/bin/bash
this_path=$(cd `dirname $0`;pwd)
file=idc-business #原始日志名称
current_date=`date -d "yesterday" +%Y_%m_%d-%M-%S`
path_log=$this_path/logs
path_split_log=$path_log/splitlog
date=`date -d "yesterday" +%Y_%m_%d-%M-%S`
#实际上是1天前的所以增加1 day ago
date_file=$file_$date
cp $path_log/$file.out $path_split_log/$date_file.log
cat /dev/null > $path_log/$file.out
if [ $path_log/$file.out -eq 0 ];then
echo "Split is finished!"
else
echo "Split is Failed!"
exit 1
fi
每隔5分钟定时执行
crontab -e
*/5 * * * * sh /app/vrms/server/idcbussiness/splitlog.sh
第二种(未测试):
#!/bin/bash
# Author: JamesLuo
# Last Update: 2022.07.29
# Description: nohup.out 日志分割
this_path=$(cd `dirname $0`;pwd) #根据脚本所在路径
current_date=`date -d "-1 day" "+%Y%m%d"` #列出时间
cd $this_path
echo $this_path
echo $current_date
do_split () {
[ ! -d logs ] && mkdir -p logs
#split -b 10m -d -a 4 ./nohup.out ./logs/nohup-${current_date}.log #切分10兆每块至logs文件中,格式为:nohup-xxxxxxxxxx
if [ $? -eq 0 ];then
echo "Split is finished!"
else
echo "Split is Failed!"
exit 1
fi
}
do_del_log() {
find ./logs -type f -ctime +30 | xargs rm -rf #清理30天前创建的日志
cat /dev/null > nohup.out #清空当前目录的nohup.out文件
}
if do_split ;then
do_del_log
echo "nohup is split Success"
else
echo "nohup is split Failure"
exit 2
fi
crontab -e 添加定时任务:每周第一天的1点执行一次
#0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null
添加定时任务
crontab -e #添加定时任务:每周第一天的1点执行一次
0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null