periodic: add support for .xz and .zcat compressed logs

Also improve temporary file usage in 200.accounting, add an xref to
zstd(1) to newsyslog.conf.5, and clarify in periodic.conf that
"daily accounting" means process accounting and "monthly accounting"
is login accounting.

PR:		253868
Reviewed by:	allanjude
Approved by:	blackend (mentor)
Differential Revision:	https://reviews.freebsd.org/D29267
This commit is contained in:
Ceri Davies 2021-06-02 17:28:28 +01:00
parent c9f8dcda85
commit 774bb1c256
6 changed files with 34 additions and 9 deletions

View File

@ -365,7 +365,7 @@ daily.
.Pq Vt bool
Set to
.Dq Li YES
if you want to rotate your daily accounting files.
if you want to rotate your daily process accounting files.
No rotations are necessary unless
.Va accounting_enable
is enabled in

View File

@ -415,6 +415,7 @@ entry:
.Xr bzip2 1 ,
.Xr gzip 1 ,
.Xr xz 1 ,
.Xr zstd 1 ,
.Xr syslog 3 ,
.Xr chown 8 ,
.Xr newsyslog 8 ,

View File

@ -52,6 +52,12 @@ case "$daily_status_mail_rejects_enable" in
elif [ -f /var/log/maillog.$n.bz2 ]
then
bzcat -fc /var/log/maillog.$n.bz2
elif [ -f /var/log/maillog.$n.xz ]
then
xzcat -f /var/log/maillog.$n.xz
elif [ -f /var/log/maillog.$n.zst ]
then
zstdcat -fc /var/log/maillog.$n.zst
fi
n=$(($n - 1))
done

View File

@ -18,16 +18,30 @@ case "$monthly_accounting_enable" in
W=/var/log/utx.log
rc=0
remove=NO
filetoread=$W.0
if [ ! -f $W.0 ]
then
if [ -f $W.0.gz ]
if [ -f $W.0.gz ] || [ -f $W.0.bz2 ] || [ -f $W.0.xz ] || [ -f $W.0.zst ]
then
TMP=`mktemp -t accounting`
remove=YES
zcat $W.0.gz > $W.0 || rc=1
elif [ -f $W.0.bz2 ]
then
remove=YES
bzcat $W.0.bz2 > $W.0 || rc=1
filetoread=$TMP
if [ -f $W.0.gz ]
then
zcat $W.0.gz > $TMP || rc=1
elif [ -f $W.0.bz2 ]
then
bzcat $W.0.bz2 > $TMP || rc=1
elif [ -f $W.0.xz ]
then
xzcat $W.0.xz > $TMP || rc=1
elif [ -f $W.0.zst ]
then
zstdcat $W.0.zst > $TMP || rc=1
else
# shouldn't get here, unless something disappeared under us.
rc=2
fi
else
echo '$monthly_accounting_enable is set but' \
"$W.0 doesn't exist"
@ -39,10 +53,10 @@ case "$monthly_accounting_enable" in
echo ""
echo "Doing login accounting:"
rc=$(ac -p -w $W.0 | sort -nr -k 2 | tee /dev/stderr | wc -l)
rc=$(ac -p -w $filetoread | sort -nr -k 2 | tee /dev/stderr | wc -l)
[ $rc -gt 0 ] && rc=1
fi
[ $remove = YES ] && rm -f $W.0;;
[ $remove = YES ] && rm -f $TMP;;
*) rc=0;;
esac

View File

@ -53,6 +53,8 @@ catmsgs() {
case $f in
*.gz) zcat -f $f;;
*.bz2) bzcat -f $f;;
*.xz) xzcat -f $f;;
*.zst) zstdcat -f $f;;
esac
done
[ -f ${LOG}/auth.log ] && cat $LOG/auth.log

View File

@ -53,6 +53,8 @@ catmsgs() {
case $f in
*.gz) zcat -f $f;;
*.bz2) bzcat -f $f;;
*.xz) xzcat -f $f;;
*.zst) zstdcat -f $f;;
esac
done
[ -f ${LOG}/messages ] && cat $LOG/messages