Shell: Dateien löschen, die älter als ein Jahr sind

find /var/log/ -mtime +365 -type f -delete

Parameter:

/var/log/ = Pfad in dem gesucht werden soll

-mtime +365 = Dateien, die älter als 365 Tage sind

-type f = Einträge, die Dateien sind („d“ statt „f“ für Verzeichnisse)

-delete = Lösche Suchergebnisse (Alternativ: -exec rm {} \;)

Shell: SWAP nach Nutzung anzeigen

Der Linux-Befehl „top“ kann SWAP für die pid’s anzeigen („f“,SWAP anwählen mit rechter Pfeiltaste, Spalte aktivieren mit Leertaste, „s“ für sort und „q“ für quit).

Alternativ:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

Postgresql: Ermitteln Datenbankname aus postgresql-filesystem

Postgres speichert seine Datenbanken in einem „base“-Ordner mit Unterordnern pro Datenbank. Das Problem ist, dass die Unterordner aus einer Zahlenkombination bestehen (welche die oid der Datenbank darstellt). Falls es zu Problemen mit dem Filesystem kommt, kann man mit folgender Abfrage ermitteln, welcher Unterordner zu welcher Datenbank gehört (von postgresql-console psql):

postgres=# SELECT pg_database.datname,pg_database.oid FROM pg_database ORDER BY datname;

Damit erhält man eine Auflistung aller Datenbanknamen und der zugehörigen oid (welche die Zahl des Unterordners ist).

Ist der Unterordner bekannt (Unterordner = oid zB 16429), kann man mit folgender Abfrage die Datenbank ermitteln:

postgres=# SELECT oid,datname from pg_database WHERE oid=16429;

Beispiel: rsync error in /var/lib/postgresql/9.3/main/base/16429/234035538

Dann verbindet man sich mit der betroffenen Datenbank:

postgres=# \c my-database

Um den Tabellennamen bei Postgresql < 9.4 zu ermitteln:

SELECT 
    n.nspname AS tableschema, 
    c.relname AS tablename
FROM pg_class c
INNER JOIN pg_namespace n ON (c.relnamespace = n.oid)
WHERE c.relfilenode = 234035538; -- "subdir name"
 tableschema |          tablename          
-------------+-----------------------------
public | customers_bookings_services
(1 row)

Für Postgresql > 9.4:

SELECT pg_filenode_relation(0, 234035538); -- "0" stands for default tablespace

Shell: IP’s und MAC-Adressen aus eigenem Netz – sortiert

Welche IP’s sind in meinem Netzwerk und welche MAC-Adresse ist ihnen zugeordnet?

arp -e | sort -t . -k 3,3n -k 4,4n

„arp -e“ listet IP-Adressen und MAC-Adressen im Netz auf (Linux-Style).

„sort“ sortiert diese (-t . = Delimiter „.“, -k x,xn sortieren nach x-tem Element und numerisch sortieren („n“ am Ende vom k-Parameter).

Um den ARP-Cache (IP und MAC gecached) anzuzeigen und zu sortieren:

ip n s | sort -t . -k 3,3n -k 4,4n