这可能很容易做到,但是我找不到与该主题相关的任何内容。 我正在为服务中的日志设置自定义logrotate.conf文件。 作为此过程的一部分,我希望保留日志最多7天,压缩7天以上的附件,并删除22天以上的任何内容。 到目前为止,我正在尝试测试是否可以将压缩文件移动到另一个目录,以防止主日志目录变得过于混乱。
到目前为止,我的规则如下:
/home/user1/logs/profile_service/*.log
{
daily
rotate 7
copytruncate
compress
postrotate
mv /home/user1/logs/profile_service/*.gz /home/user1/logs/archive/profile_service/
endscript
}
我对此的理解是 postrotate应该将那些.gz文件移动到存档目录中。 但是,当我手动运行logrotate:
logrotate -f /home/user1/logrotate.conf
时,它将旋转日志并将日期附加到文件中,但未能压缩日志,并且没有任何内容进入存档:
mv: cannot stat ‘/home/user1/logs/profile_service/*.gz’: No such file or directory
logrotate_script: line 2: compress: command not found
error: error running non-shared postrotate script for /home/user1/logs/profile_service/profile.log of '/home/user1/logs/profile_service/*.log
'
当我不包括postrotate来移动文件时 ,文件将正常压缩。
Попробуйте lastaction
/endscript
From the man page:
Строки между lastaction и endscript (обе эти строки должны появляться на самих строках) выполняются (используя /bin/sh) один раз после поворота всех лог-файлов, которые соответствуют шаблону подстановки, после выполнения постротатного скрипта и только в том случае, если поворачивается хотя бы один лог. Эти директивы могут появляться только внутри определения лог-файла. Весь шаблон передается скрипту в качестве первого аргумента. Если скрипт выходит с ошибкой, то отображается только сообщение об ошибке (так как это последнее действие). См. также первое действие.
.