History Erweiterung bash

Drawing Shell

Viele AIX und UNIX Benutzer verwenden bash als bevorzugte Shell. Navigieren in der History mit den Cursor-Tasten wird sicher von allen Benutzern täglich unzählige Male verwendet. Solange die interessanten Kommandos nur kurze Zeit zurückliegen, funktioniert dies sehr gut. Für Kommandos die länger zurückliegen, ist der Zugriff mit Hilfe der Cursor-Tasten aber relativ aufwändig. Wer möchte schon 50 Mal die Cursor-Tasten betätigen um auf ein Kommando zuzugreifen?

Eine deutlich effizientere Möglichkeit bietet hier der bash History Erweiterungsmechanismus. Mit Hilfe des History Zeichens „!“ kann auf zurückliegende Kommandos zugegriffen werden. Dabei können die Kommandos auf verschiedene Weisen spezifiziert werden:

    • Die Nummer des Kommandos: !31
    • Das n-te zurückliegende Kommando: !-n (z.B. !-3 für das drittletzte Kommando)
    • Das letzte Kommando das mit einer bestimmten Zeichenkette anfängt: !ca
    • Das letzte Kommando das an beliebiger Stelle eine bestimmte Zeichenkette besitzt: !?ca

Damit sind die Möglichkeiten aber noch lange nicht ausgeschöpft. Man kann gezielt auf einzelne Argumente eines zurückliegenden Kommandos zugreifen und sogar Änderungen vornehmen.

Hier einige wenige dieser Möglichkeiten:

    • !! (das letzte Kommando erneut ausführen)
    • ^op^art (das letzte Kommando erneut ausführen, dabei aber „op“ durch „art“ ersetzen)
    • cat !?sam?:% (das Kommando cat auf dem letzten Argument das die Zeichenkette „sam“ enthält ausführen)
    • vi !$ (vi auf dem letzten Argument des letzten Kommandos ausführen)

Eine Beschreibung dieser und weiterer Möglichkeiten der bash findet man hier:

Die bash History Erweiterung (Expansion)

Welche Größe hat der interne Log bei JFS2

inline log size

Eine triviale Frage über die wir kürzlich gestolpert sind:

Wie groß ist denn der interne JFS2 Log aktuell?

Die Größe des internen JFS2 Logs muss die folgenden beiden Bedingungen erfüllen:

    1. Der Log kann nicht größer als 10% der Dateisystem-Größe sein.
    2. Die maximale Größe kann 2047 MB nicht überschreiten.

Beim Anlegen eines JFS2 Dateisystems mit internem Log, wenn keine Log-Größe (-a logsize=Value) angegeben wird, werden standardmäßig 0.4% der Dateisystem-Größe verwendet. Der Wert 0.4% ist in der Manual Page zu crfs dokumentiert.

Aber, wie groß ist denn der interne JFS2 Log gerade?

Diese Information liefert das Kommando dumpfs. Es erwartet als Argument entweder den Mount-Punkt eines JFS2 Dateisystems oder die Geräte-Datei des unterliegenden Logical Volumes. Das Kommando listet den Superblock, sowie eine Reihe weiterer Verwaltungs-Informationen auf. Die Ausgabe kann bei größeren Dateisystemen sehr lang sein. Da wir nur an dem JFS2 Log interessiert sind, empfiehlt es sich die Ausgabe durch das Kommando grep zu filtern:

# dumpfs /data | grep -i log
aggregate block size    4096            log2 of aggregate block size    12
LVM I/O Transfer size   512             log2 of LVM transfer  size      9
log2 of block size/transfer size        3
Aggregate attributes    J2_GROUPCOMMIT J2_INLINELOG
log device      0x8000002700000001 log serial number    0x26
Inline Log: 541065216 (132096); 1024
fsck Service Log number of blocks: 50
Extendfs Inline Log Working Space: 541065216 (132096); 1024
#

Der letzte Wert in der Zeile „Inline Log:“ gibt die Größe des internen Logs in Blöcken an. Die Blockgröße des Dateisystems findet man in der Zeile „aggregate block size“. In unserem Falle hat der interne Log eine Größe von 1024 Blöcken, zu jeweils 4096 Bytes. Dies ergibt eine Größe von 4 MB (1024 * 4 KB).

Für den Fall das ein externer Log verwendet wird, sieht die Ausgabe wie folgt aus:

# dumpfs / | grep -i log
aggregate block size    4096            log2 of aggregate block size    12
LVM I/O Transfer size   512             log2 of LVM transfer  size      9
log2 of block size/transfer size        3
log device      0x8000000a00000003 log serial number    0xb
Inline Log: 0 (0); 0
fsck Service Log number of blocks: 50
Extendfs Inline Log Working Space: 0 (0); 0
#

Der interne Log hat die Größe 0 Blöcke.

Allerdings ist dies nicht die einfachste Möglichkeit. Chris Gibson weist auf die Option „-q“ des Kommando lsfs hin, welche für JFS und JFS2 Dateisysteme zusätzliche Informationen anzeigt:

# lsfs -q /filesystem
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/fslv01     --         /filesystem            jfs2  1048576 --         no   no
  (lv size: 1048576, fs size: 1048576, block size: 4096, sparse files: yes, inline log: yes, inline log size: 4, EAformat: v1, Quota: no, DMAPI: no, VIX: yes, EFS: no, ISNAPSHOT: no, MAXEXT: 0, MountGuard: no)
#

Die Größe des Inline Logs wird dort direkt in MB angegeben (inline log size: 4).

Die Größe des internen JFS2 Log festzustellen ist also mit dem richtigen Kommando (dumpfs lsfs) kein Problem!