1

Rechnen in BASH

Posted by admin on Aug 31, 2009 in Allgemein, Work Related

Wehe man hat bc nicht installiert! Dann nicht weiterlesen. Du kannst sehen, ob Du bc installiert hast:

ls -alh /usr/bin/bc

Wenn es vorhanden ist, dann kann man so wunderbare Funktionen wie sqrt benutzen. Allerdings ist wieder etwas rumprobieren erforderlich, da man bc über echo füttert.

echo $(echo "$temp" | bc )

Das Echo in der Mitte übergibt $temp an bc. Das erste echo gibt den Inhalt der Klammer aus. Statt $temp kann da auch eine wilde Rechenoperation wie sqrt($temp) o.ä. drin stehen. Besonders wichtig:
Das(bc) ist die einzige Möglichkeit Fließkommazahlen / Floatingpointnumbers in der bash zu benutzen! Und weil Floatingpointnumbers im normalen Leben einer Bash keine Rolle spielen, muss man die Nachkommastelle wieder entfernen. Wie runden in der bash funktioniert, hab ich noch nicht rausgefunden, aber truncate geht mit:

TEMP=$(echo "sqrt($TARGETSIZE/($ROWS/$COLUMNS))" | bc -l)
NEWCOLUMNS=$(printf %.0f $TEMP)

Die zweite Zeile ist das Entfernend er Nachkommastelle.

UPDATE:
Wer Mathe kann, ist klar im Vorteil. An dieser Stelle ein “Danke” an Johannes für diese verblüffend einfach Lösung.

x=ganzzahlanteil(a+0,5)

Bissel drüber nachdenken und es ergibt sich von selbst. Das klappt natürlich nach diesem System([a*10^nachkommastelle+0,5]/10^nachkommastelle) auch für beliebige Nachkommastellen, nicht nur für die Erste.

Die Umsetzung in ein bash script ist dann einfach gewesen:

bash Script:

function round () {
echo $(printf %.$2f $(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc))
}

echo $(round 3.1234 2)
echo $(round 3.1271 2)

Ausgabe

3.12
3.13

Schlagwörter: ,

 
2

Olé olé

Posted by admin on Aug 31, 2009 in Allgemein

Wollen wir dieses seltene Ereignis feiern! So (relativ) gut, wie jetzt wird in Hamburg nie wieder Fußball gespielt werden.
Hamburg-Fussball

 
0

Mount FTP

Posted by admin on Aug 27, 2009 in Allgemein, Work Related

Es gibt Leute, die wollen FTP Verzeichnisse mounten. Also mit ihrem FTP Account auf den entfernten Server zugreifen, sich regulär einloggen, das soll im Hintergrund geschehen und am besten danach so anfühlen, als arbeite man auf der lokalen Maschine. Ich verstehe nicht wozu man das braucht, aber es geht. Einfach das Paket curlftpfs installieren. Das geht bei Debian mit apt-get install curlftpfs dann mit
curlftpfs user:passwort@IP.IP.IP.IP /mountpoint
einbinden und fertig. Soll das ganze auch nach einem Neustart funktionieren, dann geht das so:
curlftpfs#user:password@IP.IP.IP.IP /mountpoint fuse rw,uid=500,user,noauto 0 0
Diese Zeile habe ich aber noch nicht getestet!

Spass beiseite: Selbstverständlich kann sowas sehr praktisch sein, wenn man mit einem FTP Server arbeitet, auf den man keinen Einfluss hat. Solche simplen Arbeiten, wie das Vergleichen von Verzeichnissen oder kopieren von Dateien,

UPDATE:
Ein echter Haken ist, dass die Dateiowner hinterher nicht mehr stimmen. Klar! Wie soll das bei FTP auch gehen.
Links:

deren Inhalt sich geänder hat, werden so erst möglich.

Schlagwörter: , , ,

 
0

Linux IO Performance

Posted by admin on Aug 26, 2009 in Allgemein

Wenn man lange genug probiert, dann gelingt es einem irgendwann einen eigenen Kernel von Grund auf zu erstellen. Dies wird belohnt! Ein schlanker Kernel kann eine Verbesserung der IO-Leistung um bis zu 88% bewirken. Dazu ist es notwendig alle Optionen abzuschalten, auf die man verzichten kann.

Der Test wurde auf einem relativ alten PC-System (Athlon 1000 / 1 GB RAM / PATA)  durchgeführt. Die Steigerung der Input-Output Leistung lässt sich hier gut erkennen.

Steigerung um 88%

Steigerung um 88%

Selbstverständlich ist das nur der Peak und der auch nur in einem Test. Aber ich habe das Gefühl, dass selbst das Einloggen auf der Konsole deutlich schneller von statten geht. Der Test wurde mit dem Tool iozone durchgeführt. Die Testergebnisse sind aggregierte Zahlen über Tests mit unterschiedlichen Blockgrößen zu jedem Test und werden durch die dunklen rötlich/braunen Balken repräsentiert. Die blauen Balken sind ein Experiment mit den selben Kernel Optionen und dem neuen Kernel von Kernel.org Es zeigt sich, dass sich noch einige Prozente durch den neuen Kernel(2.6.31.rc7) herauskitzeln lassen. Aber nicht in allen Tests war der  31.rc7 dem 2.6.30.4 überlegen. Die gesamten Ergebnisse können dem Excelsheet entnommen werden.

Links:

 
1

Neuen Kernel erstellt – Apache kaputt

Posted by admin on Aug 18, 2009 in Allgemein

Der neue Kernel bootet und “Apache starting” erscheint. Dann in rot “Apache starting .. FAIL.”
Grrrrrr…. Erstmal den Apache Errorlog angesehen und folgende Zeile gefunden.

(38)Function not implemented: mod_rewrite: could not create rewrite_log_lock
Configuration Failed

Irgendwas mit mod-rewrite kaputt? Merkwürdig. Das hängt sicher mit dem neuen Kernel zusammen. Und tatsächlich, man muss bei
General Setup -> System V IPC den HAken setzen. Sonst gibts keinen mod-rewrite beim Apachen.

 
1

Linux Festplattenfüllstand überwachen

Posted by admin on Aug 13, 2009 in Allgemein

Läuft die Festplatte ständig voll, ohne dass Du es merkst? Dann versuch doch mal dieses Bash Skript:

#!/bin/bash
## Author Ingmar Stempell
TRESHOLD=80 #Diskusage
ALARM="echo \"Platte(\$1) fast voll(\$pvoll)\" | mail -sPlattevoll root"; #what shall we do
if [ -z $1 ]
then echo "We need one disk to monitor. eg. /dev/hda1"
exit 255
fi
if [ -n $2 ]
then
TRESHOLD=$2
fi
pvoll=$(df $1 | grep $1 | awk '{print $5}')
voll=${pvoll/\%/}
if [ $voll -gt $TRESHOLD ] ; then eval $ALARM ; fi

Es funktioniert gut genug um nach einem Test in Einsatz zu gehen. Aber der Test ist unumgänglich. Kein Skript für Leute, die nicht bereit sind etwas zu testen.

Schlagwörter: , , ,

 
0

Bind9 not working

Posted by admin on Aug 13, 2009 in Allgemein, Work Related

Man oh man, da sucht man sich einen Wolf in den Bind Einstellungen, weil der bind die Zonen zwar einliest, aber sie danach ignoriert und am Ende liegt es daran, dass in der

/etc/resolv.conf

was eingetragen ist. Und zwar das Falsche! Einfach auskommentieren oder die Datei löschen und bind macht seine Arbeit.

Copyright © 2017 Stempell All rights reserved. Theme by Laptop Geek.