Popular Tags:

Echt gruseliger Aufzug

27. November 2012 at 20:30

Heute mal wieder was nicht-technisches: Ein lustiges Video. Und ich gebe offen zu, ich wäre vermutlich in diesem Aufzug auch nicht ganz cool geblieben…

Youtube Direktlink: http://youtu.be/7N5OhNplEd4

Das farbige Bash Prompt

19. November 2012 at 20:15

Beispiel meines PromptsEin ehemaliger Arbeitskollege hat mich auf die Idee gebracht, mein geliebtes Prompt mal zu veröffentlichen.

Vor langer Zeit störte mich auf der Shell oft, dass man beim Arbeiten mit langen Ausgaben oft den Anfang der Ausgabe suchen mußte. Das war teilweise gar nicht so nicht einfach, wenn man mehrere ähnlich aussehende Config-Files nacheinander anzeigt, muss man schon genau schauen, wo dazwischen das Prompt steht.

Die Lösung war einfach: Ein farbiges Prompt. So erkennt man sehr schnell die Trennung und wenn das Prompt dann noch eine Leerzeile einbaut, wird es richtig schnell übersichtlich.

Folgende Informationen wollte ich noch im Prompt sehen:

  • Benutzername
  • Hostname
  • Aktuelles Arbeitsverzeichnis
  • Exitcode des letzten Kommandos

Der Exitcode (in Spitzen Klammern, hier im Beispiel ‚0‘) ist für’s Scripten sehr hilfreich, da man direkt beim Ausprobieren eines Kommandos an der Shell sieht, welcher Exitcode vom Programm zurückgegeben wird. So weiß ich gleich, ob es klappt und welchen Exitcode mein Script beim Ausführen des Kommandos erwarten darf.

Zusätzlich zum Prompt setze ich auf meinem System auch gleich noch einen Alias für ‚ls‘, damit dort immer die lange Ausgabe ausgegeben wird und die Einträge auch gleich in passenden Farben erscheinen.

In Summe sieht das dann bei mir so aus:

export PS1='\n\[\033[1;32m\]\u@\h: \w\n<$?> $ \[\033[0m\]'
alias ls='ls -AlFh --color=auto'
export LS_OPTIONS='--color=auto'
export LS_COLORS='no=00;37:fi=00;37:di=01;37:ln=01;33:pi=00;36:so=00;36:do=00;36:bd=00;36:cd=00;36:or=00;33:ex=01;36:';

Um das Prompt (Umgebungsvariable PS1) kurz zu erklären:

  • \n ist ein Enter
  • \[\033[{code}m\] = Ansi Escape Farbcode (siehe dazu Linupedia und Wikipedia)
  • \u ist der aktuell angemeldete Benutzer
  • \h ist der Hostname
  • \w ist das aktuelle Verzeichnis (working directory)
  • $? ist der Exitcode des letzten Programms
  • $ ist das Prompt-Zeichen (abhängig davon, ob man Benuter oder Root ist)

Die ‚1;32m‘ in der ersten Zeile ist der Farbcode:

  • 0;30m – Schwarz
  • 1;30m – Dunkelgrau
  • 0;31m – Rot
  • 1;31m – Hellrot
  • 0;32m – Grün
  • 1;32m – Hellgrün
  • 0;33m – Braun
  • 1;33m – Gelb
  • 0;34m – Blau
  • 1;34m – Hellblau
  • 0;35m – Violett
  • 1;35m – Hellviolett
  • 0;36m – Türkis
  • 1;36m – Helltürkis
  • 0;37m – Hellgrau
  • 1;37m – Weiß

Das ganze läßt sich dann z.B. in der ~/.bashrc eintragen, so dass es bei jedem Login gleich verfügbar ist.

Ich mache dies meist aber nicht so. Es gab in meinem Job schon Diskussionen mit anderen Admins, die mein Prompt nicht sinnvoll fanden oder ihr eigenes lieber hatten. So haben wir uns darauf geeinigt, keine Farben in der .bashrc zu speichern und stattdessen im Home-Verzeichnis eine Datei mit dem eigenen Prompt anzulegen.

Bei mir heißt die Datei ~/prompt_mbutschek und enthält obige Zeilen. Nach dem Login gebe ich ein ‚. pr[tab]‘, was dann zu ‚. prompt_mbutschek‘ wird. Damit importiere ich die Einstellungen in die aktuelle Bash-Sitzung. Andere Admins haben dagegen das Standardprompt und werden durch meine Liebe zum bunten Prompt nicht gestört.

Wie lang ist ein Ethernet-Paket?

24. Oktober 2012 at 20:34

Neulich kam in einem Vortrag das Thema auf, wie lange eigentlich ein Ethernet Paket ist. Gemeint war nicht die Länge in Byte, sondern in Metern, und zwar wenn das Paket als Lichtstrahl mit Lichtgeschwindigkeit durch ein Glasfaserkabel geschossen wird. In der Praxis ist dies wohl eher eine unnütze Information, aber ich fand die Frage sehr interessant und habe daher mal nachgerechnet. Tragen wir zuerst die Fakten zusammen:

1. Lichtgeschwindigkeit

  • Lichtgeschwindigkeit entspricht 299.710 Kilometer pro Sekunde, das sind also 299.710.000 Meter pro Sekunde.

2. Gigabit Ethernet

  • 1 Gbit/s (Gigabit pro Sekunde) entspricht 1 * 1024 * 1024 * 1024 Bit pro Sekunde = 1.073.741.824 Bit pro Sekunde.
  • Bei 8 Bit pro Byte entspricht das also 134.217.728 Byte pro Sekunde.

3. Ethernet

  • Ethernet-Pakete sind „üblicherweise“ maximal 1.500 Byte groß.
  • Das gilt nicht, wenn man Vlan Tagging oder Jumbo Frames benutzt, aber in „üblichen“ Netzen, in denen Client-PCs hängen (also das typische Heimnetzwerk) ist das nicht der Fall.

Daraus folgt:

  • Bei Gigabit-Speed schicken wir pro Sekunde 134.217.728 Byte auf den Weg.
    Ein Paket hat 1.500 Byte, also kriegen wir pro Sekunde ganze 89.478,4853 Pakete auf die Leitung.
  • Das Licht ist mit 299.710.000 Meter pro Sekunde unterwegs.
    Also schieben wir auf einer Länge von 299.710.000 Metern (=1s) 89.478,4853 Pakete (=auch 1s).
  • Daraus ergibt sich die Länge des Pakets:
    299.710.000 Metern / 89.478,4853 Pakete = 3.349,5 Meter pro Paket.

Ergebnis:

Die Länge des Lichts in einem Glasfasernetz, welche ein Ethernet-Paket überträgt, ist:

  • …bei Gigabit-Geschwindigkeit: 3.350 Meter lang.
  • …bei 10 Gigabit (10GE)  335 Meter pro Paket.
  • … bei 100GE nur noch 33 Meter pro Paket.

Anmerkung für Home-Anwender:

Die meisten Privatpersonen haben heutzutage ein Netzwerk mit nur 100 MBit/s. Das Paket wäre hier 33.495 Meter lang, doch kann man das nicht so direkt vergleichen. Im Gegensatz zu Licht, welches wirklich von A nach B gesendet wird, überträgt man Daten mit Strom nicht durch das Übertragen der Elektronen, sondern man überträgt nur den Impuls.

Elektronen „fließen“ sehr sehr langsam (abhängig von Spannung, Material der Leitung und Durchmesser der Leitung zwischen 0,03 und 0,8 mm/s). Die Impulsgeschwindigkeit bei Strom ist dagegen etwa Lichtgeschwindigkeit (nicht ganz, aber fast).

Das ganze ist vergleichbar mit einem Wasserschlauch: Schickt man Wasser in einen langen Schlauch, dauert es einige Sekunden, bis das Wasser am Ende rauskommt. Ist der Schlauch jedoch schon voller Wasser und dreht man hinten dann den Hahn auf, kommt vorne sofort Wasser raus – ohne Verzögerung. Das passiert, weil nicht das Wasser von A nach B übertragen wird, sondern der Bewegungsimpuls.

Von daher wäre der Impuls im Netzwerkkabel in etwa so lang wie oben beschrieben (also 33,5 Kilometer pro Paket), jedoch wäre es falsch zu behaupten, der Strom hätte eine Länge. Faktisch ist der Strom nämlich immer genauso lang, wie das Kabel, in dem er fließt.