Gelöschte Logfiles retten
Frage: Was tut man, wenn man sich aus Versehen ein wichtiges Logfile gelöscht
hat? Also z.B. /var/log/httpd/access_log
?
Antwort: Wenn man den Dienst, der das Logfile offen hält, neu gestartet oder
ihm ein SIGHUP
(SIGUSR1i
, $WHATEVER der Prozess halt braucht, um Logfiles neu zu
öffnen) geschickt hat, dann tut man gar nichts, denn dann hat man verloren. Hat
man das aber nicht getan, dann gibt es das File noch auf der Platte - denn “ein
offenes Filehandle ist ein offenes Filehandle ist ein offenes Filehandle”, wie
Frank sagen würde. Und wir kommen da jederzeit über das /proc
-Filesystem ran.
Das vorgehen ist denkbar einfach - im ersten Schritt suchen wir die
Prozessnummer und die Nummer des FD raus:
|
|
In der ersten Spalte steht dabei der Prozessname, in der zweiten die PID und in der vierten der FD. Angenommen, die PID sei “1710” und das Filehandle “11w”, dann finden wir das File hier:
|
|
Alles halb so wild.