Wiederherstellen gelöschter Dateien (squid-log)

Die letzten Tage hatten sich der squid und logrotate nicht besonders lieb. ;-) Logrotate hatte es offensichtlich nicht geschafft den squid zu stoppen, mit dem Ergebnis, dass jetzt im log-Verzeichnis ein paar leere Dateien liegen. Das tatsächlich Logging des squid läuft zwar noch, aber die zugehörige Datei ist inzwischen gelöscht. – Schade eigentlich. :shock:
Da aber der (alte noch laufende) squid-Prozess seine log-Datei noch offen hat, ist auch die Inode noch vorhanden :-) und dadurch kann man das File auch wieder herstellen. :cool:
Dazu ermitteln wir zuerst den Handle der Inode. In meinem Listing unten hat der (noch laufende alte) squid die Prozess-ID 21813 und das log-File den Handle 7. Mit diesem Wissen können wir dann den Inhalt des log-Files zurück schreiben, den alten squid-Prozess endgültig killen und den Proxy-Dienst neu starten:

# lsof -n -P | grep /var/log/squid
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

squid 21813 proxy 5u REG 8,23 575646 13 /var/log/squid/cache.log.1 (deleted)
squid 21813 proxy 7w REG 8,23 2394472971 14 /var/log/squid/access.log.1 (deleted)
# ls -l /proc/21813/fd/7
l-wx—— 1 proxy proxy 64 18. Okt 19:44 /proc/21813/fd/7 -> /var/log/squid/access.log.1 (deleted)
# cp -fp /proc/21813/fd/7 /var/log/squid/access.log.1
# squid -k kill
# /etc/init.d/squid start

Damit haben wir den Inhalt des bisherigen Logs gesichert und das neue log-File sollte sich wieder wie gewohnt füllen.
[postnote user1=“uwe“ user2=“sysadmin“]Anpassungen in der /home/ogm315/projekte/squid/startscript_add


stop)
if [ „${slowie_erlaubt}“ == „yes“ ] then
killall -9 slowie.pl 2>&1 >/dev/null
fi
if [ -L /var/log/squid/access.log ] then
access_tmp=`mktemp /var/log/squid/access.log.$$.XXXXXX`
cat /var/log/squid/access.log > ${access_tmp} 2>/dev/null
rm -f /var/log/squid/access.log
fi
;;
reload)

if [ ! -f /var/log/squid/access.log -a ! -L /var/log/squid/access.log ] then
squid_pid=`lsof -n -P | grep /var/log/squid | grep access | awk ‚{print $2}’`
if [ „${squid_pid}“ -gt 0 ] then
ln -s /proc/${squid_pid}/fd/7 /var/log/squid/access.log
fi
fi

[/postnote]
Gelesen: 901 · heute: 2 · zuletzt: Fri 16.August 2019

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.