nohup定时日志分割每天生成一个日志文件

使用nohup启动java后台程序时,默认生成的日志文件保存在nohup.out中,随着时间的推移日志文件会越来越大,非常不方便查。所以如果一天生成一个日志文件,则每个日志文件户小很多,方便打开查看。下边介绍如何定时每天生成一个日志文件

1、创建shell脚本

首先创建一个log.sh的shell脚本,内容如下:

log_dir="/root/knight/java/admin"
# 拷贝日志文件到昨天的log中
cp $log_dir/nohup.out $log_dir/nohup`date -d yesterday +%Y%m%d`.log


# 清空nohup.out日志
cat /dev/null > $log_dir/nohup.out


# 删除14天以前的日志
find $log_dir -mtime +14 -name 'nohup*.log' -exec rm -rf {} \;

其中:log_dir="/root/knight/java/admin"用于指定每天日志文件的存放位置。

2、手动执行shell脚本

在脚本所在文件夹下运行以下命令执行脚本

./log.sh

如果提示以下错误:

cp: cannot stat '/usr/local/'$'\r''/nohup.out': No such file or directory

是因为Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行错误。

执行以下命令去除Shell脚本中的\r字符:

sed -i 's/\r//' log.sh

如果提示权限不足,执行以下命令增加权限:

chmod 777 ./log.sh

验证脚本执行没有问题后,进行下一步操作。

3、设置定时任务

执行以下命令打算定时任务配置:

crontab -e

按如下内容添加定时任务:

0 0 * * * /root/knight/java/admin/log.sh

其中  0 0 * * * /root/knight/java/admin/log.sh  为新添加的定时任务,每天0点执行指定的shell脚本,用户可以根据自己的实际需要调整时间。

执行以下命令重启定时任务配置以使新增加的定时任务配置生效:

service crond restart

 

参考原文链接:https://blog.csdn.net/sg_knight/article/details/130369581

posted @   丶eric  阅读(1728)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
点击右上角即可分享
微信分享提示