webForumDet fria alternativet

Bash - Rotera flera loggfiler samtidigt

Programmering

1 svar · 2 885 visningar · startad av FlashX

Medlem sedan nov. 19991 033 inlägg
Frågan#1

Programmerar inte i Bash men var tvungen att kika lite på det och skapade ett litet program som raderar alla loggfiler som man anger i en lista. Har man t.ex en utvecklingmaskin så blir det inte lika mycket som på en mer aktiv maskin men med åren tar de ju lite plats så jag kör detta som cronjobb en gång i kvartalet. Man väljer själv vilka filer man vill radera genom att lägga till eller ta bort i skriptet.

#!/bin/bash
#
###################################
# Variabler att redigera
#
# Ange sökväg till loggfilerna (varje fil, egen rad)
LOGFILES="
/var/log/syslog
/var/log/messages
/var/log/maillog
"
#
# Sökväg för att starta om syslogd
RESTARTSYSLOGD="kill -HUP `cat /var/run/syslogd.pid`"
#
# Slut variabler att redigera
###################################

for each_log in $LOGFILES  
do
	if [ -f $each_log ]
	then
		rm $each_log
		touch $each_log

		done_log=$done_log"$each_log "
	else
		not_done_log=$not_done_log"$each_log "
	fi
done

# Starta om syslogd
$RESTARTSYSLOGD

if [ -n "$done_log" ]
then
	echo ""
	echo "Loggfilerna"
	echo "------------------------------"

		for each_done_log in $done_log
		do
        		echo "$each_done_log"
		done
	echo "------------------------------"
	echo "har nollställts."
	echo ""
fi

if [ -n "$not_done_log" ]
then
	echo ""
	echo "ERROR:"
	echo "Filerna"
	echo "------------------------------"

		for each_not_done_log in $not_done_log
		do
			echo "$each_not_done_log"
		done
	echo "------------------------------"
	echo "existerar inte (kontrollera sökvägarna)."
	echo ""
fi
Medlem sedan aug. 20021 752 inlägg
#2

Tråd flyttad från "Script - Övrigt".

/Viktor

252 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)