Procházet zdrojové kódy

fix:tail will empty the file

rufengsuixing před 5 roky
rodič
revize
2f905eafa4

+ 6 - 6
root/etc/init.d/AdGuardHome

@@ -536,18 +536,18 @@ do_crontab(){
 	
 	config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome"
 	config_get lastworkdir $CONFIGURATION lastworkdir "/usr/bin/AdGuardHome"
-	findstr="tail -n [0-9]* $workdir/data/querylog.json > $workdir/data/querylog.json"
-	[ -n "$lastworkdir" ] && findstr="tail -n [0-9]* $lastworkdir/data/querylog.json > $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}"
-	default="0 * * * * tail -n 2000 $workdir/data/querylog.json > $workdir/data/querylog.json"
+	findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $workdir/data/querylog.json"
+	[ -n "$lastworkdir" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}"
+	default="0 * * * * /usr/share/AdGuardHome/tailto.sh 2000 $workdir/data/querylog.json"
 	[ "$enabled" == "0" ] || [ "${crontab//cutquerylog/}" == "$crontab" ] && cronenable=0 || cronenable=1
 	crontab_editor
 	[ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1
 	
 	config_get logfile $CONFIGURATION logfile ""
 	config_get lastlogfile $CONFIGURATION lastlogfile ""
-	findstr="tail -n [0-9]* $logfile > $logfile"
-	default="30 3 * * * tail -n 2000 $logfile > $logfile"
-	[ -n "$lastlogfile" ] && findstr="tail -n [0-9]* $lastlogfile > $lastlogfile" && [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}"
+	findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $logfile"
+	default="30 3 * * * /usr/share/AdGuardHome/tailto.sh 2000 $logfile"
+	[ -n "$lastlogfile" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastlogfile" && [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}"
 	[ "$logfile" == "syslog" ] || [ "$logfile" == "" ] || [ "$enabled" == "0" ] || [ "${crontab//cutruntimelog/}" == "$crontab" ] && cronenable=0 || cronenable=1
 	crontab_editor
 	[ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set AdGuardHome.AdGuardHome.lastlogfile="$logfile" && commit=1

+ 4 - 0
root/usr/share/AdGuardHome/tailto.sh

@@ -0,0 +1,4 @@
+#!/bin/sh
+tail -n $1 "$2" > /tmp/var/tailtmp
+cat /tmp/var/tailtmp > "$2"
+rm /tmp/var/tailtmp