[GLUGHF] Ubuntu, fsck läuft, Anmeldung bereits möglich

Frank Bergmann tx-7-12 at tuxad.com
Sun Feb 28 10:57:27 CET 2010


In Sun, 28 Feb 2010, Lutz Neumann cum veritate scripsit :

> Einer hat noch einen Vorschlag mit mount gemacht. Diesen habe ich
> aufgegriffen und im startscript des vdr leicht abgewandelt eingebaut:
> 
>    while [ $( mount | grep -c ' on /var/lib/video.00' ) -eq 0 ]


Immer dran denken: Die Bash ist die lahmste Shellkruecke wo jibt!

1) Command substition bedeutet extra fork(). Und Molochs wie die bash muss 
man nicht unbedingt forken, wenn es nicht noetig ist. Und Pipes benoetigen 
auch ohne Substitution eine Subshell. Also bitte vermeiden, wenn's geht.

2) Der Rueckgabewert der Ersetzung muss als numerischer Wert geparsed 
werden und numerisch verglichen werden. Das kann die Bash nicht so toll.

3) Der mount ist ein weiterer fork(). Und wer einmal einen strace auf 
einen mount-Befehl gemacht hat, der wird damit vorsichtig umgehen. Seit 
ein paar Generationen bietet Linux eine nette direkte Schnittstelle zum 
Kernel, das procfs. Das geht damit um Groessenordnungen schneller und 
Resourcen schonender.

Mach es lieber so:
     until grep -q " /var/lib/video.00 " /proc/mounts
     do
...

Falls Du sicher bist, dass eine Bash >= 3.0 vorhanden ist, kannst Du Dir 
den fork des aufgeblaehten GNU-grep auch noch sparen, indem Du die Bash 
internal Regular Expressions nutzt. Beispiel:

fbergmann:~$ [[ "meinteststring" =~ "test" ]] && echo OK
OK
fbergmann:~$ [[ "meinTeststring" =~ "test" ]] && echo OK
fbergmann:~$ 

Oder Du nutzt sfgrep. :-)

Es mag jetzt vielleicht wie Tintenpisserei anmuten, aber wenn jedes 
daemliche Bashscript in jedem beliebigen Linux-System mit ein bisschen 
mehr Knowledge programmiert waere, wuerden einige Linux-Systeme IMHO im 
2stelligen Prozentbereich schneller/Resourcen schonender laufen.
Wenn man viel Erfahrung mit Hosts hat, die oefter mal eine Load1 von 50 
bis 100 haben, dann merkt man sehr leicht die feinen kleinen Unterschiede 
in Bashscripts.

Das parallele Starten von Systemdiensten mittels upstart oder anderer 
SysV-Init-Alternativen muesste einen Rechner eigentlich viel schneller bis 
zum Prompt booten lassen. Ich habe selbst mehrfach einen "Gewinn" von ca. 
2 Sekunden bei einer Bootzeit von um die 50 Sekunden festgestellt. Wow! 
Dolle wolle! Jetzt ratet mal, warum der ganze Mist wider Erwarten och 
nicht so viel schneller ist. Koennte es vielleicht DAU-Shellprogrammierung 
sein?
Kroenungen sind ja dann noch kleine externe Helferlein, wie das usleep von 
Red Hat. Ein Meisterstueck in der Kunst des aufgeblaehten C-Codes fuer 
extrem simple Funktionen wie EINEN EINZIGEN Syscall. Das Teil ist gegen 
libc UND libpopt gelinkt, mehrere KB gross und soll als "kleines" Tool 
fuer "optimierte" Shellprogrammierung genutzt werden. Huahaha.
Im Heiseforum steige ich auch nicht mehr auf Diskussionen zum Thema "Linux 
ist ein Frickelsystem" ein, weil die Gegenseite immer mehr handfeste 
Argumente hat.

Genug ausgekotzt.
Vielleicht haette ich vor "Systemadministration mit C" noch das Thema 
"Bashoptimierungen" behandeln sollen. ;-)


EDV Frank Bergmann                           Tel.     05221-9249753
LPIC-2 Linux Professional                    Fax      05221-9249754
Elverdisser Str. 25                          email    iservice at tuxad.com
32052 Herford                                USt-IdNr DE237314606

-- 
Q: What, Professor Hawking, puzzles you the most? What do you
   think about the most?
A: Women. 




More information about the Linux mailing list