shell

dd optimieren

Written by  on März 24, 2012

dd ist ein Tool um Dateien und Geräte blockweise zu kopieren. Erst kürzlich kam eine Anfrage zu mir, wie denn die Geschwindigkeit von dd gesteigert werden könnte. Im konkreten Fall ging es auch noch darum, die Daten übers Netzwerk zu übertragen.

1) Komprimierung verwenden

dd if=/dev/sdX bs=1024 count=1024 | gzip -9 | ssh root@192.168.XXX.XXX "gunzip | dd of=/tmp/testfile"

2) Blockgröße einstellen

Die Auswirkung der Blockgröße habe ich mal etwas durchprobiert. In diesem Diagramm, sieht es so aus, als würde die Blockgröße nicht viel bringen. Der default Wert auf dem Test-System war genau ein Block der Festplatte mit 512 Byte. Das anheben der Blockgröße auf deutlich über 1MB bringt je nach Test 30 – 60 % mehr Geschwindigkeit.

Wait I/O

Written by  on März 4, 2012

Wait I/O wird immer dann angezeigt, wenn ein Prozess auf die Festplatte warten muss. …

Was kann man gegen Wait I/O tun?
Neben den offensichtlchen sachen, wie z.B. schnellere Festplatten, performantere RAID Levels oder gleich einer SSD gibt es noch eine, zugegeben nutzlose Möglichkeit, den Wait I/O zu reduzieren.
Mit einer leeren Schleife pro CPU Kern, wird die Nutzung so gewandelt, dass sie statt I/O-lastig plötzlich CPU-lastig ist:

while true; do true; done

Abra Ka Kosmetik – die Wait I/O ist verschwunden 😉

PS: Macht das nicht zu Hause (auf einem Produktiv-System) nach…

Dateinamen aus einer Liste extrahieren

Written by  on Februar 7, 2012

Hier die Liste:

# cat test.lst
X:KRIS KRISTOFFERSONKRIS KRISTOFFERSON - HELP ME MAKE IT THROUGH THE NI - SINGLE - 1980 - COUNTRY - 0.MP3|TAG|KRIS KRISTOFFERSON|HELP ME MAKE IT THROUGH THE NI||SINGLE|1980|0|COUNTRY|MP3|0|141296|0|327680|0|0|-1|0|0|0|3|192|10|-1|0|0|0|-1472508263|0||0|-1|-1|
X:ENGLISCHCCARLENE CARTERCARLENE CARTER - EVERY LITTLE THING - SINGLE - 1980 - DANCE - 0.MP3|TAG|CARLENE CARTER|EVERY LITTLE THING||SINGLE|1980|0|DANCE|MP3|0|192992|0|327680|0|0|-1|0|0|0|3|128|10|-1|0|0|0|804889938|0||0|-1|-1|
X:TOM ASTOR UND WOLFGANG PETRY - TAKE ME HOME - FOX.MP3|TAG|TOM ASTOR UND WOLFGANG PETRY|TAKE ME HOME|FOX||2006|||MP3|0|177972|0|327680|0|0|-1|0|0|0|3|192|10|-1|0|0|0|-1510661211|18||43283610|-1|-1|
X:TEXAS COUNTRYTEXAS COUNTRY - HEARTACHE COUNTY.MP3|TAG|TEXAS|COUNTRY||- HEARTACHE COUNTY|1999|TRACK|COUNTRY|MP3|0|178364|0|327680|0|0|-1|0|0|0|3|128|10|-1|0|0|0|-742867055|0||0|-1|-1|

Aufgabe: Extrahiere den Dateinamen:

# cut -d"|" -f1 test.lst | awk -F '' '{ print $NF }'
KRIS KRISTOFFERSON - HELP ME MAKE IT THROUGH THE NI - SINGLE - 1980 - COUNTRY - 0.MP3
CARLENE CARTER - EVERY LITTLE THING - SINGLE - 1980 - DANCE - 0.MP3
TOM ASTOR UND WOLFGANG PETRY - TAKE ME HOME - FOX.MP3
TEXAS COUNTRY - HEARTACHE COUNTY.MP3

Howto: Screen

Written by  on Dezember 30, 2011

Screen ist ein kleines Programm, welches einen eigenen "Bildschirm" öffnet. Dieser läuft auch nach dem ausloggen der Shell weiter und kann in einer anderen Sitzung wieder übernommen werden.

Screen starten:

screen

Wieder ausloggen: [Strg + a]; d(etatch)

Vorhandene Screen-Sitzungen auflisten:

server:~ # screen -list
There is a screen on:
        27272.pts-4.server      (Detached)
1 Socket in /var/run/screens/S-root.

Eine Sitzung forsetzten

screen -r(esume) [PID] 

PID ist nur notwendig, wenn bereits mehr wie eine Sitzung läuft.

chmod -x chmod

Written by  on November 21, 2010

Vor einiger Zeit schon gesehen, aber jetzt wieder gefunden.

Sollte man dem chmod-Befehl das Recht nehmen, gestartet zu werden – wie kann man es wieder herstellen. Einige mehr oder weniger kreative Ideen zeigt diese Präsentation: …

Useless Use of Cat Award

Written by  on September 20, 2008

Mitlerweile bin ich ja über mehrere Hinweise gestoßen, dass es manche Menschen einfach nicht vertragen eine *sinnlose* cat Anweisung in einem Shellscript zu sehen. Der ganze Hintergrund der Geschichte wird ja z.B. hier http://partmaps.org/era/unix/award.html zusammengefasst.

Ich denke aber, dass auch ein Konstrukt wie "cat /var/log/messages | grep <Asudruck>" durchaus seine Berechtigung hat. Will ich etwa das Logfile von gestern sehen wird daraus deutlich einfacher ein "zcat /var/log/messages | grep <Asudruck>" oder "bzcat /var/log/messages | grep <Asudruck>" auf der nächsten Maschine daraus. Und das kann wohl der grep alleine noch nicht…

Die Primzahlensuche ist eine Geschichte voller Missverständnisse

Written by  on Juni 22, 2007

Ein Bekannter von mir sollte ein Programm zum Primzahlen berechnen schreiben, ist aber hoffnungslos daran gescheitert. Hier nur ein kurzer Hack, der in wenigen Minuten im vi auf der shell entstand und bei weitem nicht perfekt ist. Aber der Code darf jetzt ins Netz bevor das Programm endgültig von meiner Platte verschwindet!

#include &lt;stdio.h&gt;

int is_prim(int);

int main()
{
  int i;
  for(i=0;i&lt;10000;i++)
  {
    is_prim(i);
  }
  return 0;
}

int is_prim(int zahl)
{
  int i;
  int prim=0;

  for(i=(zahl-1);i&gt;=2;i--)
  {
    if((zahl%i)==0)
    {
      prim++;
    }
    else
    {
    }
  }
  if(prim==0)
  {
    printf(&quot;%d ist primn&quot;,zahl);
  }
  else
  {
  }
  return 0;
}

Hier wären natürlich noch jede Menge Optimierungen möglich. So würde die Berechnung der Werte bis zur Wurzel der Obergrenze ja schon ausreichen, oder man könnte noch vielfache von vorhandenen Zahlen vorher aussieben.