Kommandozeilenparameter eines laufenden Prozesses ausgeben

Stehe öfters mal vor der „Aufgabe“, das ich wissen möchte, mit exakt welchen Parametern ein Prozess gestartet wurde. Teilweise ist das zu „breit“ für eine „ps“ Ausgabe — besonders gerne bei Java Prozessen…

Weiterlesen

Advertisements

Leere Verzeichnisse auf *nix finden — portabel

Stand vorhin vor dem Problem, das ich auf Solaris alle leeren Verzeichnisse und leeren Dateien unterhalb eines Verzeichnisses finden wollte.

Auf Linux, bzw. genauer gesagt: mit GNU Tools und deren findutils, hätte ich dafür die Option „-empty“ von find(1) verwendet. Aus der Dokumentation:

[…]
— Test: -empty

True if the file is empty and is either a regular file or a directory. This might help determine good candidates for deletion. This test is useful with ‘-depth’ (see Directories) and ‘-delete’ (see Single File).

[…]

Aber, wie gesagt, ich war auf Solaris, bzw. genauer gesagt: ich hatte die GNU findutils nicht zur Verfügung und konnte sie auch nicht nachinstallieren… Also musste eine bessere (read: portable) Lösung her 🙂

Und die lautet:

find $DIR '(' -type d -links 2 \) -o -size 0

Dh. man lasse find nach Verzeichnissen („-type d“) suchen, in denen GENAU nur 2 „Links“ („-links 2“) sind — das sind alle die Verzeichnisse, die leer sind.
Und es sollen auch sonst alle „Einträge“ gefunden werden, die eine Grösse von 0 („-size 0“) habe — das sind alle leeren Dateien.

Dh. die Option „-empty“ von GNU find ist genau identisch zu der portablen Optionskombination „‚(‚ -type d -links 2 \) -o -size 0„.

Das zeigt exemplarisch auch wunderschön, was so schlecht ist an dem GNU Toolset – unnötige Optionen… Klar, ein „-empty“ ist schneller getippt als „‚(‚ -type d -links 2 \) -o -size 0„, aber dafür ist letzteres überall brauchbar. Wenn in der GNU Dokumentation wenigstens stünde, das beides identisch ist, dann wäre es ja vlt. noch gut. Oder wenn notiert wäre, das „-empty“ nur bei GNU find existiert und nicht im POSIX Standard steht… Da dem aber so nicht ist, ist „-empty“ schlecht.

Festplatte bei Solaris 10 x86 austauschen

Folgendes ist zu tun, wenn man auf einem Solaris 10 x86 (Intel) System eine Platte austauschen will, die bei ZFS verwendet wird, z.B. weil die Platte defekt ist.
  1. Im zpool die defekte Platte „offline“ nehmen
    • zpool offline pool c0t5d0s0
  2. VTOC der defekten Platte speichern:
    • prtvtoc /dev/rdsk/c0t5d0s2 > /c0t5d0.vtoc
  3. Platte aus der Solaris Konfiguration entfernen
    • cfgadm -c unconfigure c0::dsk/c0t5d0
  4. Defekte Platte entfernen
  5. Neue Platte einstecken
  6. Mit dmesg überprüfen, ob neue Platte von alleine gefunden wurde
    • Wenn nicht:
      • cfgadm -c configure c0::dsk/c0t5d0
    • Oder:
      • cfgadm -al > /cfgadm-al.0
      • devfsadm -c disk
      • cfgadm -al > /cfgadm-al.1
      • diff -u /cfgadm-al.0 /cfgadm-al.1
        • Notiz von Devicenamen der neuen Platte machen
    • Oder, falls nichts von dem hilft:
      • Rechner rebooten
      • cfgadm -c configure c0::dsk/c0t5d0
  7. Bestehende VTOC von defekter Platte übertragen:
    • fmthard -s /c0t5d0.vtoc /dev/rdsk/c0t5d0s2
  8. Im zpool die Platte austauschen:
    • zpool replace pool c0t5d0s0
  9. Die Platte wieder online nehmen
    • zpool online pool c0t5d0s0
  10. Ab und an den Status des Pools überprüfen, um feststellen zu können, ob der Resilver fertig ist
    • zpool status pool
  11. Counter für Module zfs-diagnosis und zfs-retire von fmstat zurücksetzen
    • fmadm reset zfs-diagnosis
    • fmadm reset zfs-retire
  12. Defekt Meldungen von fmadm auslesen und auf repariert setzen
    • fmadm faulty
    • fmadm repair <id> # Id wird bei "fmadm faulty" angezeigt
  13. Fertig.

Im grossen und ganzen von http://download.oracle.com/docs/cd/E19082-01/817-2271/ghzvx/index.html kopiert.

Keine kostenlosen Patches für Solaris 10!

SunSolve Seite von Sun

SunSolve - hier "gab's" mal Patche für Solaris

Nach der Übernahme von Sun durch Oracle hat sich eine „Kleinigkeit“ in Bezug auf Patches für Solaris 10 geändert.

Bisher war es möglich, auch ohne Wartungsvertrag bestimmte Patches zu downloaden – in der Regel Security Patches konnte man so bekommen.

Dem ist seit heute nicht mehr so.

Weiterlesen

Nagios/Icinga: Veritas NetBackup Volume Pool Check Plug-In

To monitor the number of available tapes in a „Volume Pool“ of our Symantec/Veritas NetBackup installation, I was looking for a „Plug-In“ for Nagios/Icinga. And on „Jurry’s Blog„, I found a sample script, which I „enhanced“ a bit.

Here’s the script:

Weiterlesen

Installing dependency libraries for Nagios/Icinga

Nagios and also Icinga require that the GD library is present; libgd in turn requires libpng, libjpeg and FreeType to be there. For reference, here’s how those packages have been compiled on „my“ Solaris 10 5/09 Sparc M4000 system using Sun Studio 12.1.

Overview

All the sources are to be compiled using Sun Studio and everything is to be installed underneath /opt/local. Code should, generally, be compiled with compiler flags (CFLAGS) set to a value, which generate the best performance. Ie.:
Weiterlesen

Solaris 10: Clone einer Non-Global Zone mit ZFS Snapshots

Im „Systemverwaltungshandbuch“ von Sun zu Solaris 10 finden wir zum Stichwort „Klonen einer nicht-globalen Zone im gleichen System“:

  1. Erstellen Sie die neue Zone zone1 durch Klonen von my-zone.
    global# zoneadm -z zone1 clone my-zone

    Das System zeigt Folgendes an:

    Cloning zonepath /export/home/my-zone...

    Wenn sich der zonepath der Quelle in einem ZFS-Pool befindet, beispielsweise zeepool, zeigt das System ab Solaris 10 5/09 Folgendes an:

    Cloning snapshot zeepool/zones/my-zone@SUNWzone1
    Instead of copying, a ZFS clone has been created for this zone.

Hört sich gut an, aber…
Weiterlesen