Archiv der Kategorie: Shell

Shell: Touch rekursiv

„touch“ ist ein Shell-Programm, dass den Zeitstempel von Dateien ändern kann. Im Normalfall wird der aktuelle Zeitstempel gesetzt. Leider gibt es keine Parameter für rekursive Bearbeitung (über mehrere Verzeichnisebenen).

Abhilfe:

find . -exec touch {} \;

Hier erledigt „find“ das filtern aller Dateien aus den Unterverzeichnissen und über den exec-Parameter wird dann „touch“ aufgerufen.

Shell: Fehlendes Floppy-Laufwerk /dev/fd0 spammt Logs

Wenn das Kernelmodul „floppy“ geladen ist, aber kein Floppy-Drive vorhanden ist, werden die Logfiles gespammt (dmesg, syslog, je nach Konfiguration). Einträge sehen etwa folgendermassen aus:

dmesg:
[1016164.312385] end_request: I/O error, dev fd0, sector 0
[1016164.313839] floppy: error -5 while reading block 0

syslog:
May 12 07:20:21 server1 kernel: end_request: I/O error, dev fd0, sector 0
May 12 07:20:21 server1 kernel: floppy: error -5 while reading block 0

Die Lösung ist das Entfernen des floppy-Kernelmoduls und blacklisten desselbigen für den nächsten Reboot (Root-Rechte erforderlich).

# echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
# rmmod floppy
# update-initramfs -u

Shell: Rekursives ändern des Zeitstempel mit find und touch

Der Befehl touch hat keinen rekursiv Parameter. Will man also eine Ordnerstruktur mit touch behandeln, braucht man find als Hilfe:

find . -exec touch {} \;

Dieser einfache Befehl startet im aktuellen Ordner und geht dann rekursiv in die Tiefe und verpasst allen Dateien den aktuellen Zeitstempel.

Postgresql: Datenbank mit aktiven Connections löschen

Ein „DROP DATABASE mydb“ wird nicht funktionieren, solange es aktive Verbindungen gibt (pgbouncer, phpmyadmin, etc.). Manchmal können nicht alle Verbindungen identifiziert und geschlossen werden.

Dann hilft folgende SQL-Zeile (mydb durch eigenen Datenbanknamen ersetzen):

SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'mydb' AND pid <> pg_backend_pid();

Stackoverflow