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.

Linux „at“ ignores timezone

While trying to solve some Nagios issue, I remembered that there’s the „at“ command scheduler. It allows to execute a given command at a specified time. So, for example, it’s possible to say „run the SMS sending command at 7 o’clock“:

echo sms-sending-command | at 07:00

If invoked like that, 07:00 is interpreted to mean „07:00 in the current timezone„. It’s also possible to say that 07:00 is supposed to be in the UTC timezone, like so:

echo sms-sending-command | at 07:00 UTC

On my Solaris 10 machines (and also on my Mac OS X notebook), this really works like it should — but on Linux (I tested ArchLinux, Debian & Mandriva), it doesn’t 😦 Check this out: Weiterlesen