für Einsteiger:
für Fortgeschrittene:
ein sich dynamisch vergrößerndes Image (Startgröße ⇒ 1MB), welches sich auf eine maximale Größe von bis zu 10GB vergrößern kann, kann man so erstellen:
# dd if=/dev/zero of=platte.img bs=1M count=1 seek=10240
Das UNIX-Kommando „cat“ listet eine Datei Zeile für Zeile auf, „tac“ dagegen listet eine Datei Zeile für Zeile in umgekehrter Reihenfolge aller Zeilen auf.
Das ist oft sehr nützlich, leider gibt es dieses Kommando nur in Linux jedoch nicht in FreeBSD.
In FreeBSD kann man exakt das gleiche Ergebnis erreichen, wenn man statt dessen „tail -r“ verwendet.
die SMTP Verbindung beobachten:
# ngrep -d eth0 port 25
alle Statusangeben anzeigen:
# stat -x test.txt File: "test.txt" Size: 10 FileType: Regular File Mode: (0644/-rw-r--r--) Uid: ( 1002/ fritz) Gid: ( 1000/ nutzer) Device: 227,3155755234 Inode: 525336 Links: 1 Access: Sun Oct 23 16:08:13 2011 Modify: Sun Oct 23 16:08:13 2011 Change: Sun Oct 23 16:08:13 2011
# stat -s test.txt st_dev=3155813346 st_ino=525336 st_mode=0100644 st_nlink=1 st_uid=1002 st_gid=1000 st_rdev=4294967295 st_size=10 st_atime=1319378893 st_mtime=1319378893 st_ctime=1319378893 st_birthtime=1319378893 st_blksize=4096 st_blocks=2 st_flags=0
Zugriffsrechte anzeigen:
# stat -f '%p' test.txt 100644
Access (letzter Zugriff):
# stat -f '%Sa' test.txt Oct 23 16:08:13 2011
Modify (letzte Veränderung des Inhaltes):
# stat -f '%Sm' test.txt Oct 23 16:08:13 2011
Change (letzte Veränderung des Dateinamens):
# stat -f '%Sc' test.txt Oct 23 16:08:13 2011
alle Statusangeben anzeigen:
# stat test.txt File: „test.txt“ Size: 10 Blocks: 24 IO Block: 4096 reguläre Datei Device: 17h/23d Inode: 12338 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ fritz) Gid: ( 1000/ nutzer) Access: 2011-10-23 16:08:08.995003157 +0200 Modify: 2011-10-23 16:08:10.810996879 +0200 Change: 2011-10-23 16:08:10.818996848 +0200
Zugriffsrechte anzeigen:
# stat -c '%a' test.txt 644
Access (letzter Zugriff):
# stat -c '%x' test.txt 2011-10-23 16:08:08.995003157 +0200
Modify (letzte Veränderung des Inhaltes):
# stat -c '%y' test.txt 2011-10-23 16:08:08.995003157 +0200
Change (letzte Veränderung des Dateinamens):
# stat -c '%z' test.txt 2011-10-23 16:08:08.995003157 +0200
Es ist möglich, die Bit-Breite mit einem einzigen kleinen Aufruf zu ermitteln:
getconf LONG_BIT 64
Allerdings hat diese Angabe nichts mit der CPU zu tun, sondern mit dem Betriebssystem.
Mit uname wird gezielt die Hardwareunterstützung durch das Betriebssystem abgefragt.
uname -m x86_64
Allerdings wird hier ein 32-Bit-Betriebssystem auch auf einer 64-Bit-Maschine nur „i386“, „i486“, „i586“ oder „i686“ ausgeben.
Diese Script läuft unendlich lange und protokolliert bei einer Load ab LOGLOAD die ersten 30 Zeilen der TOP-Ausgabe im /tmp-Verzeichnis unter dem Namen /tmp/bigload_[Datum]_[Uhrzeit].txt:
#!/bin/sh
LOGLOAD="8"
while true
do
if [ "$(uptime | sed -e 's/\.[0-9,]* / /g' -e 's/\.[0-9]*$//' | awk '{print $(NF-2)}')" -ge "${LOGLOAD}" ] ; then
top -b -n 1 | head -n30 > /tmp/bigload_$(date +%F_%H%M%S).txt
fi
sleep 1
done
Die relevanten Werte können hiermit eingesehen und geändert werden.
betreffend der Shell bzw. den Benutzer (/etc/security/limits.conf):
# ulimit -n
diese Kerneloptionen gelten global (/etc/sysctl.conf):
# sysctl fs.file-max
was hat ein Programm geöffnet:
# lsof -c sendmail
welche Programme hängen am SMTP-Port:
# lsof -i :25
welche Programme haben Logfiles geöffnet:
# lsof +D /var/log
Anzeige aller Prozesse, die gerade auf die Datei “/usr/bin/vim“ zugreifen (vi arbeiten):
# lsof /usr/bin/vim
Anzeige aller Prozesse, die gerade auf die CD-ROM-Gerätedatei “/dev/sdc“ zugreifen:
# lsof /dev/sdc
Beenden aller Prozesse, die noch auf ein ins CD-ROM-Laufwerk eingelegtes Medium zugreifen:
# kill $(lsof -t /cdrom)
Anzeige aller offenen Dateien des Prozesses mit der PID 2326:
# lsof -p 2326
Anzeige aller offenen Dateien im Verzeichnis “/tmp“ und seinen Unterverzeichnissen, ohne dabei auf symbolische Links zu achten:
# lsof +D /tmp
Anzeige aller vom Benutzer „max“ geöffneten Dateien:
# lsof -u max
Anzeige aller offenen Dateien, die nicht der Benutzer „root“ geöffnet hat:
# lsof -u ^root
Anzeige einer ähnlichen Prozessliste wie ps aux durch Auflisten der Einträge mit Dateideskriptoreintrag „txt“ statt der sonst üblichen Nummer („txt“ steht für Programmcode und Daten, also eine ausgeführte Datei):
# lsof -d txt
Anzeige aller gelöschten Dateien, die noch geöffnet sind und daher Plattenplatz verbrauchen, aber in keinem Verzeichnis erscheinen (Dateien mit weniger als einem Link):
# lsof +L1
Anzeige aller netzwerkrelevanten Dateien:
# lsof -i
Anzeige aller netzwerkrelevanten Dateien, ohne die Portnummern als Dienstbezeichnung auszuschreiben und ohne die Hostnamen aufzulösen (daher deutlich schneller):
# lsof -i -P -n
Anzeige aller IPv6-bezogenen Dateien:
# lsof -i6
Anzeige aller aktiven Verbindungen:
# lsof -i | grep '\->'
Anzeige aller derzeit vom Benutzer „www-data“ geöffneten Netzwerkdateien (UND-Verknüpfung durch “-a“):
# lsof -a -i -u www-data
In BSD wurden viele Details im Inneren besser umgesetzt als in Linux. Besonders FreeBSD kann durch die große Anzahl an portierten Programmen sehr gut als Arbeitsplatzbetriebssystem eingesetzt werden. Wenn unter *BSD ein „Port“ existiert, ist die Installation von Software in *BSD einfacher als unter Linux, da der „Port“ den Luxus bietet, das die Quelle, die Patches und andere Besonderheiten, dem USER nicht bekannt sein müssen da diese Informationen bereits im „Port“ eingepflegt wurden.
Bei den bekanntesten Vertretern der BSD-Reihe handelt es sich um drei Betriebssysteme, die jeweils auf einem anderen Gebiet spezialisiert sind:
Das selbst die GNU nicht ganz zufrieden mit dem Linux-Kernel ist sieht man schon daran, dass sie (trotz Kritik) das Projekt HURD nie eingestellt haben und sogar Portierungen der Debian GNU-Pakete auf die BSD-Kernel (z.B. Debian GNU/kFreeBSD) erfolgen. Linux ist eben mehr Marketing als Brillants. Linuz Torwalds (der Initiator des Kernels Linux) sagte einmal sinngemäß, das der Linux-Kernel nur gut genug zu sein braucht, er muss nicht perfekt sein; es sei viel wichtiger, das er über viele Funktionen verfügt. Das NetBSD-Team dagegen, vertritt nicht die Philosophie „Es funktioniert, also ist es richtig.“, sondern „Es funktioniert nicht, bis es richtig ist.“. Das NetBSD-Team legt auf die vollständige Befolgung von POSIX und Standard C am meisten Wert von allen freien Betriebssystemen, dann folgt gleich die anderen *BSD-Team's.
Presse: Meine Erfahrungen decken sich mit diesen (doch teilweise recht aufwendig betriebenen) Test's:
Linux 2.4 vs. FreeBSD 4.1.1:
Ich bin von NetBSD, FreeBSD und OpenBSD gleichermassen begeistert, jedes fasziniert auf seine eigene Art. Doch werde ich in meinem privaten Umfeld (ersteinmal) nur FreeBSD einsetzen, da am Arbeitsplatz (Workstation) die Anzahl der verfügbaren Software sehr wichtig ist und die speziellen Unterschiede der drei Produkte hier eine geringere Rolle spielen. Nach dieser Wertung heisst der Kandidat auf Platz 2 „NetBSD“.
Linux verwendet seit dem Kernel 2.6 endlich wieder ein brauchbares Speichermanagement und weil bei FreeBSD der Desktop immer noch recht stiefmütterlich behandelt wird, setze ich auf meinen Desktop-Rechnern (auch Laptop) seit 2005 Linux ein.
FreeBSD wird allerdings auf meinem Server bleiben.
Für diesen Zweck hatte ich verschiedene Betriebssysteme (NetBSD, Nexenta, Solaris und OpenSolaris) getestet. Aber leider hatte jedes dieser Betriebssysteme eigene lobenswerte Vorteile aber auch irgendeine Schwäche, mit der ich auf meinem Server nicht leben wollte. Und so wird FreeBSD auch in Zukunft auf meinem Server bleiben.