nohup java -jar ./xxxxx.jar &
nohup java -jar ./xxxxx.jar >> ./logs/nohup.out 2>&1 & 输出到指定目录、指定文件
(第一条指令)linux下后台运行自己部署的jar包项目,日志会输出到当前目录下的nohup.out文件中
但是nohup.out日志文件会越来越大,特别是这次客户端无限重连,导致日志文件一天暴涨几十个G,但是又不能删除,只能重启服务的间隙删除日志文件。
这次用Linux自带的定时任务执行分割日志(nohup.out)的sh文件
vim split_logs.sh 新建/修改文件,输入以下内容
# 获取前一天日期
current_date=`date -d "-1 day" "+%Y%m%d"`# 第一种方式:这里使用split命令,将nouhup文件按指定大小切分(365535000 大概60多M吧,可以自定义大小 ),并分成指定格式(-d -a 4以4位数字形式为后缀以从0000开始,具体可以百度split命令用法),最终输出格式为log_20220710_0001
split -b 365535000 -d -a 4 /usr/local/smart_store/nohup.out /usr/local/smart_store/split_log/log_${current_date}_
# 第二种方式 复制文件的方式,以每天的日志大小切分
# cp /usr/local/smart_store/nohup.out /usr/local/smart_store/split_log/${current_date}.log
# 最后清空nohup.out 原文件的内容
cat /dev/null > /usr/local/smart_store/nohup.out
# 拓展 清除split_log目录下15天前旧日志文件
find /usr/local/smart_store/split_log/ -mtime +15 -name 'log_*' -exec rm -rf {} \;
# 拓展 清除split_log目录下及子目录15天前旧日志文件
find /mnt/usr/local/box/box_logs/ -maxdepth 4 -mtime +15 -name '*.log' -exec rm -rf {} \;
wq保存退出
赋予文件执行权限
chmod 777 split_logs.sh
开启定时任务,执行split_logs.sh
vim /etc/crontab
wq保存退出,第二天查看前一天文件有没生成
我这边脚本已经执行了,说明定时任务已生效
但是别人好像也有失效的情况,使用第二种方式
crontab -l
说明没有生效,但是我这边其实也是这样的输出。。。
crontab -e
将前面的定时任务的指令,输入进入,wq保存退出
crontab -l