git: 774bb1c256fb - main - periodic: add support for .xz and .zcat compressed logs

Ceri Davies ceri at FreeBSD.org
Wed Jun 2 16:34:29 UTC 2021


The branch main has been updated by ceri (doc committer):

URL: https://cgit.FreeBSD.org/src/commit/?id=774bb1c256fbc58a7e8d0d1f7d6427007105b334

commit 774bb1c256fbc58a7e8d0d1f7d6427007105b334
Author:     Ceri Davies <ceri at FreeBSD.org>
AuthorDate: 2021-06-02 16:28:28 +0000
Commit:     Ceri Davies <ceri at FreeBSD.org>
CommitDate: 2021-06-02 16:28:28 +0000

    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
---
 share/man/man5/periodic.conf.5                     |  2 +-
 usr.sbin/newsyslog/newsyslog.conf.5                |  1 +
 .../periodic/etc/daily/460.status-mail-rejects     |  6 +++++
 usr.sbin/periodic/etc/monthly/200.accounting       | 30 ++++++++++++++++------
 usr.sbin/periodic/etc/security/800.loginfail       |  2 ++
 usr.sbin/periodic/etc/security/900.tcpwrap         |  2 ++
 6 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5
index 46174da2772a..ef80578e5372 100644
--- a/share/man/man5/periodic.conf.5
+++ b/share/man/man5/periodic.conf.5
@@ -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
diff --git a/usr.sbin/newsyslog/newsyslog.conf.5 b/usr.sbin/newsyslog/newsyslog.conf.5
index b897389b99dd..cf1a36305b00 100644
--- a/usr.sbin/newsyslog/newsyslog.conf.5
+++ b/usr.sbin/newsyslog/newsyslog.conf.5
@@ -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 ,
diff --git a/usr.sbin/periodic/etc/daily/460.status-mail-rejects b/usr.sbin/periodic/etc/daily/460.status-mail-rejects
index ce633640b6a4..6161a5525cc1 100755
--- a/usr.sbin/periodic/etc/daily/460.status-mail-rejects
+++ b/usr.sbin/periodic/etc/daily/460.status-mail-rejects
@@ -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
diff --git a/usr.sbin/periodic/etc/monthly/200.accounting b/usr.sbin/periodic/etc/monthly/200.accounting
index 46f153de535a..9d50ba182777 100755
--- a/usr.sbin/periodic/etc/monthly/200.accounting
+++ b/usr.sbin/periodic/etc/monthly/200.accounting
@@ -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
diff --git a/usr.sbin/periodic/etc/security/800.loginfail b/usr.sbin/periodic/etc/security/800.loginfail
index 4c78f441639a..ef169482001c 100755
--- a/usr.sbin/periodic/etc/security/800.loginfail
+++ b/usr.sbin/periodic/etc/security/800.loginfail
@@ -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
diff --git a/usr.sbin/periodic/etc/security/900.tcpwrap b/usr.sbin/periodic/etc/security/900.tcpwrap
index 10b02e9e2bb6..b6c44126bc1c 100755
--- a/usr.sbin/periodic/etc/security/900.tcpwrap
+++ b/usr.sbin/periodic/etc/security/900.tcpwrap
@@ -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


More information about the dev-commits-src-all mailing list