以下所有测试均在Ubunt 22.04下测试和严重
root@aaa-Inspiron-3847:/etc/logrotate.d# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
root@aaa-Inspiron-3847:/etc/logrotate.d#
我们知道在Linux下,使用下面的命令启动服务时
bin/ck600svr -c config/ck600svr.properties &
当我们关闭控制台时,服务会自动停止
关闭tab标签,服务会自动关闭
所以我们经常增加nohup来启动服务
nohup bin/ck600svr -c config/ck600svr.properties &
这样当我们关闭控制台时,服务可以后台运行
但是这样会有个问题,会默认生成一个nohup.out的日志
如果服务长期运行,这个日志文件会越来越大,以至于无法打开。
解决办法一:不生成nohup.out文件
nohup ./bin/ck600svr -c config/ck600svr.properties >/dev/null 2>log & //只输出错误信息到日志文件
nohup ./bin/ck600svr -c config/ck600svr.properties >/dev/null 2>&1 & //无任何信息输出
2>&1表示将标准错误输出重定向到标准输出,这样,程序或者命令的正常输出和错误输出就可以在标准输出输出。
这样就没有nohup.out文件了,但是我如果还想看nohup.out,还希望nohup能自动拆分是不是就更完美了,于是乎logrotate出场了。
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
/etc/logrotate.conf 和/etc/logrotate.d/,其中
logrotate.conf 是主要的参数文件,logrotate.d 是一个目录,该目录里面的所有数据都会被主动读入/etc/logrotate.conf 当中来进行。另外,在/etc/logrotate.d/ 里面的文件中,如果没有指定一些详细的设置,则以 /etc/logrotate.conf 的规定来指定为默认值。
vim ck600查看配置文件:
logrotate 配置文件的主要参数
参 致 | 参数说明 |
daily | 日志的轮替周期是毎天 |
weekly | 日志的轮替周期是每周 |
monthly | 日志的轮控周期是每月 |
rotate数宇 | 保留的日志文件的个数。0指没有备份 |
compress | 当进行日志轮替时,对旧的日志进行压缩 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组.如create 0600 root utmp |
mail address | 当进行日志轮替时.输出内存通过邮件发送到指定的邮件地址 |
missingok | 如果日志不存在,则忽略该日志的警告信息 |
nolifempty | 如果曰志为空文件,則不进行日志轮替 |
minsize 大小 | 日志轮替的最小值。也就是日志一定要达到这个最小值才会进行轮持,否则就算时间达到也不进行轮替 |
size大小 | 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如size 100k |
dateext | 使用日期作为日志轮替文件的后缀,如secure-20130605 |
sharedscripts | 在此关键宇之后的脚本只执行一次 |
prerotate/cndscript | 在曰志轮替之前执行脚本命令。endscript标识prerotate脚本结束 |
postrolaie/endscript | 在日志轮替之后执行脚本命令。endscripi标识postrotate脚本结束 |
然后使用 logrotate -f 使配置生效,你学会了么?