Mittwoch, 11. September 2013

Label eines RAID Arrays ändern

SUSE (und wahrscheinlich auch andere Distributionen) legen ein RAID Array mit einem automatischen Namen an. Wenn man das RAID Array immer an der gleichen Stelle verwendet, ist das üblicherweise auch kein Problem. Hat man aber mehrere Arrays oder will man das Array aber auf einen anderen Rechner transportieren, möchte man vielleicht wissen, was das Array mit dem Namen "/dev/md?" enthält. Hierzu ist dann ein aussagekräftiges Label des RAID-Arrays sinnvoll.

Ein bestehenden Label kann man mit diesem Befehl ändern:
mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]
  • /dev/md/alpha ist der Name des RAID Devices (hier kann man auch /dev/md0) verwenden
  • newname ist der neue Name des RAID Arrays
  • /dev/sd[gf] sind die Einzeldevices des RAID-Arrays

Den Array-Namen kann man in der Ausgabe des blkid Befehls auf den Einzeldevices sehen oder in der Ausgabe von:
mdadm --detail /dev/md/alpha

Quelle: http://askubuntu.com/questions/63980/how-do-i-rename-an-mdadm-raid-array

Montag, 9. September 2013

static imports in Eclipse

Einige Bibliotheken stellen ihre Methoden ja als statische Methoden zur Verfügung. Beispiele dafür sind jUnit#Assert oder guava#Preconditions. Wenn diese Klassen in Eclipse unter
Preferences -> Java -> Editor -> Content Assist -> Favorites
eingetragen werden, tauchen diese Methoden direkt in der Code-Completion des Content-Assistenten mit auf und können einfacher ausgewählt werden.
Meine Empfehlung:
  • org.hamcrest.Matchers.*
  • org.hamcrest.CoreMatchers.*
  • org.junit.*
  • org.junit.Assert.*
  • org.junit.Assume.*
  • org.junit.matchers.JUnitMatchers.*
  • com.google.common.base.Preconditions.*
  • org.mockito.Mockito.*



Quelle: http://piotrjagielski.com/blog/working-with-static-imports-in-eclipse/

Freitag, 9. August 2013

Reboot required?

Ein notwendiger Reboot eines Ubuntu Systems (z.B. wenn ein Paket-Update diesen erfordert), wird über die Datei
/var/run/reboot-required
signalisiert.

Donnerstag, 25. Juli 2013

Gründe, warum umount nicht funktioniert

Quelle: http://oletange.blogspot.de/2012/04/umount-device-is-busy-why.html


  • Ein Prozess greift gerade auf das gemountete Verzeichnis zu. Dieser kann üblicherweise mittels lsof gefunden und getötet werden.
  • Der nfs Kernelserver verwendet das gemountete Verzeichnis. Dies kann über den Befehl showmount geürft werden. Nach einem Stopp des Servers sollte das umount funktionieren
  • Ein loopback Device verwendet eine Datei im gemounteten Verzeichnis. Dies lässt sich per "losetup -a" überprüfen.
  • Ein Swap-File existiert im gemounteten Verzeichnis. Dies lässt sich per "cat /proc/swaps" prüfen. Falls ja, wird das Swapfile mittels "swapoff" abgeschaltet.
  • Das Device hat einen Fehler. Dieser Fall lässt sich per "dmsg" überprüfen. 

Donnerstag, 18. Juli 2013

Amazon EC2


Informationen über seine EC2 Instance kann man über die Adresse 169.254.169.254 bekommen. Hier bietet sich folgender Request an:

GET http://169.254.169.254/latest/meta-data ; echo

Mehr Informationen findet man in der EC2 Dokumentation.


bash History

Die bash Historie kann mit Hilfe des "!" angesprochen werden. Folgende Abkürzungen sind meiner Meinung nach sinnvoll:

  • !! - der letzte Befehl
  • ! - der letzte Befehl, der mit anfing
  • !* - die Argumente des letzten Befehls
  • !^ - das erste Argument des letzten Befehls
  • !$ - das letzte Argument des letzten Befehls
Zusätzlich kann hinter die !xx History Expansion ein ":p" angehängt werden. Dadurch wird ausgegeben, was die Expansion tun würde.

Damit in der History Duplikate nicht aufgeführt werden, kann man  die Environment Variable HISTCONTROL setzen. Mit
HISTCONTROL=ignoreboth
werden Duplikate und Befehle, die mit einem Space anfangen, nicht in die History übertragen.

Um eine unendliche bash-History zu bekommen, muss man eine Kombination aus den Environment-Variablen HISTSIZE und HISTFILESIZE einsetzen. Die erste beschreibt dabei die max. Größe der im RAM gehaltenen History, die zweite die max. Größe der auf Platte gehaltenen Datei.
Möchte man zum Beispiel die letzten 1000 Einträge im RAM behalten, die Datei aber beliebig groß werden lassen, muss man die Variablen wie folgt setzen:
export HISTSIZE=10000
export HISTFILESIZE=""


Quellen:

Mittwoch, 13. Februar 2013

Durchsatz einer Pipe

Um schnell Daten von einem Linux Rechner auf einen anderen zu transportieren kann man einen ssh tunnel benutzen. Zum Beispiel mit der Befehlszeile:

tar cf - src | ( ssh other "cd dest && tar xfv - " )

Dabei kann man aber leider nicht sehen, wie schnell die Übertragung ist. Hierzu kann man dann den pv (Pipe Viewer) Befehl verwenden. Dieser misst den Durchsatz durch die Pipe. Eingesetzt wird er (im obigen Beispiel) wie folgt:

tar cf - src | pv | ( ssh other "cd dest && tar xfv - " )

Leider ist pv unter SLES nicht im Standard-Repository zu finden. Eine passende Datei lässt sich aber hier herunterladen.