BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Prüfsummen der Dateien eines Ports vergleichen

Mit Hilfe von pkg_info und der -g Option lassen sich die Prüfsummen aller installierten Dateien eines Ports mit den Prüfsummen vergleichen, welche bei der Installation eines Ports gespeichert wurden:

# pkg_info -g portsopt-\*
Information for portsopt-1.4:

Mismatched Checksums:
/usr/local/sbin/portsopt fails the original MD5 checksum

Mehr Informationen zu pkg_info findet man in der Manpage pkg_info(1).

 Permalink

RAM-Disk mit mdmfs erstellen

Auf FreeBSD lässt sich mit mdmfs eine RAM-Disk im Betrieb erstellen. Im folgenden Beispiel wird eine 128MB grosse RAM-Disk erstellt und nach /mnt/ramdisk gemountet:

# mkdir /mnt/ramdisk
# mdmfs -s 128m md /mnt/ramdisk

Wird die RAM-Disk nicht mehr gebraucht, kann sie mit umount aus dem Dateisystem entfernt werden und die Ressourcen können mit mdconfig freigegeben werden. Dabei ist zu beachten, dass die richtige md-Device-Nummer verwendet wird.

# df -h | grep ramdisk
/dev/md0 124M 4.0K 114M 0% /mnt/ramdisk
# umount /mnt/ramdisk
# mdconfig -d -u 0

Benutzer von FreeBSD 7.0 können RAM-Disks auch mit tmpfs erstellen. Mehr Informationen zu mdmfs findet man in der Manpage mdmfs(8).

 Permalink

Notizen zur Konfiguration eines Servers mit FreeBSD 7.0

Das PDF mit Notizen zur Konfiguration eines Servers mit FreeBSD wurde auf FreeBSD 7.0 aktualisiert. Es kann unter http://www.chruetertee.ch/freebsd/ heruntergeladen werden. Dabei handelt es sich nicht um eine Schritt-für-Schritt Anleitung, sondern mehr um eine Sammlung von Möglichkeiten zur Konfiguration.
 Permalink

Durchsatz einer Netzwerkschnittstelle beobachten

Möchte man den aktuellen Durchsatz einer Netzwerkschnittstelle beobachten, kann man ifstat verwenden. ifstat findet man in den FreeBSD Ports unter net/ifstat:

# cd /usr/ports/net/ifstat && make install clean

Ruft man ifstat ohne Optionen auf, wird der aktuelle Durchsatz aller aktiven Netzwerkschnittstellen ausser der Loopback-Schnittstelle angezeigt. Der aktuelle Wert wird immer unter die letzte Zeile geschrieben:

# ifstat
em0 ath0
KB/s in KB/s out KB/s in KB/s out
0.00 0.00 301.53 9.91
0.00 0.00 257.42 7.66
0.00 0.00 304.30 9.36
0.00 0.00 314.56 9.77
0.00 0.00 274.49 12.07
0.00 0.00 451.21 14.38

Soll nur jeweils der aktuelle Wert alleine angezeigt werden, kann die -S Option verwendet werden:

# ifstat -S
em0 ath0
KB/s in KB/s out KB/s in KB/s out
0.00 0.00 344.64 10.11

Möchte man die Werte der verschiedenen Schnittstellen addieren, kann mit der -T Option ein Total-Wert angezeigt werden:

# ifstat -S -T
em0 ath0 Total
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
26.49 0.00 345.02 39.49 371.51 39.49

Soll die Loopback-Schnittstelle auch angezeigt werden, kann dazu die -l Option verwendet werden:

# ifstat -S -l
em0 ath0 lo0
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.00 365.15 11.23 40.00 40.00

Mit der -t Option wird jeweils die aktuelle Zeit am Anfang der Zeile angezeigt:

# ifstat -t
Time em0 ath0
HH:MM:SS KB/s in KB/s out KB/s in KB/s out
18:54:01 0.00 0.00 356.23 11.20
18:54:02 0.00 0.00 352.90 10.86
18:54:03 0.00 0.00 302.90 9.60

ifstat kann durch das Drücken von Ctrl + C wieder beendet werden. Mehr Informationen zu ifstat findet man in der Manpage ifstat(1).

Comments (3)  Permalink

Fortschritt einer Pipe beobachten

Mit Hilfe von pv kann der Durchsatz und die Menge der gesendeten Daten durch eine Pipe beobachtet werden. pv findet man in den FreeBSD Ports unter sysutils/pv.

cd /usr/ports/sysutils/pv && make install clean

Nun kann pv vor der zu beobachtenden Pipe aufgerufen werden. Es wird angezeigt, wie viele Daten bereits durch die Pipe gesendet wurden, die verstrichene Bearbeitungszeit und der Durchsatz durch die Pipe:

# dd if=/dev/acd0 bs=2048 | pv | gzip > test.iso.gz
93.6MB 0:00:55 [1.92MB/s] [ <=> ]

Falls möglich, versucht pv die verbleibende Dauer zu errechnen. Ist das nicht möglich, kann bei pv mit der -s Option die Datenmenge angegeben werden, die durch die Pipe gesendet wird und nun kann pv die verbleibende Dauer berechnen.

# dd if=/dev/acd0 bs=2048 | pv -s 130m | gzip > test.iso.gz
11.5MB 0:00:22 [ 603kB/s] [====> ] 8% ETA 0:03:46

Sollen mehrere Pipes beobachtet werden, kann pv zusammen mit -cN und dem Namen des Programmes, zu welchem die Daten durch die Pipe gelenkt werden, verwendet werden:

# bzcat test.bz2 | grep NULL | pv -cN grep | awk '{print $1}' | pv -cN awk > test
grep: 56.9MB 0:00:08 [7.69MB/s] [ <=> ]
awk: 2.82MB 0:00:08 [ 361kB/s] [ <=> ]

Mehr Informationen zu pv findet man in der Manpage pv(1).

 Permalink

Einzelnen Port im Portbaum wiederherstellen

Mit portsnap lässt sich der FreeBSD Portbaum aktualisieren. Möchte man nur einen einzelnen Port wiederherstellen, weil dieser gelöscht oder verändert wurde, so kann der Portname mit der Kategorie an ein portsnap extract übergeben werden. Danach wird nur dieser Port wiederhergestellt:

# portsnap extract ports-mgmt/portsopt
/usr/ports/ports-mgmt/portsopt/

Mehr Informationen zu portsnap findet man in der Manpage portsnap(8).

 Permalink

Unsichtbare Zeichen einer Datei anzeigen

Befinden sich in einer Textdatei unsichtbare Zeichen, werden diese zum Beispiel von cat nicht angezeigt:

# cat testdatei 
RECURSIVE=no
CONFIG=no
   
while getopts 'chr' COMMAND_LINE_ARGUMENT ; do
        case "${COMMAND_LINE_ARGUMENT}" in
                c)              CONFIG=yes ;;
                h)      usage 0 ;;
        r)      RECURSIVE=yes ;;
                *)      usage ;;
        esac
done

Benutzt man cat mit der -v Option werden alle Steuerzeichen angezeigt. Nun sieht man, dass sich ein Ctrl+X (^X) in der Datei befindet:

# cat -v testdatei
RECURSIVE=no
CONFIG=no
  
while getopts 'chr' COMMAND_LINE_ARGUMENT ; do
        case "${COMMAND_LINE_ARGUMENT}" in
                c)              CONFIG=yes ;;
                h)      usage 0 ;;
        r)      RECURSIVE=yes ;;
^X              *)      usage ;;
        esac
done

cat mit der -t Option zeigt nun auch alle Tabulatoren als ^I an:

# cat -t testdatei
RECURSIVE=no
CONFIG=no
  
while getopts 'chr' COMMAND_LINE_ARGUMENT ; do
^Icase "${COMMAND_LINE_ARGUMENT}" in
^I^Ic)^I^ICONFIG=yes ;;
^I^Ih)      usage 0 ;;
    ^Ir)      RECURSIVE=yes ;;
^X^I^I*)      usage ;;
^Iesac
done

Möchte man sich auch die Zeilenumbrüche anzeigen lassen, kann man dazu vis mit der -l Option verwenden, welches Zeilenumbrüche als \$ darstellt:

# vis -l testdatei
RECURSIVE=no\$
CONFIG=no\$
    \$
while getopts 'chr' COMMAND_LINE_ARGUMENT ; do\$
        case "${COMMAND_LINE_ARGUMENT}" in\$
                c)              CONFIG=yes ;;\$
                h)      usage 0 ;;\$
        r)      RECURSIVE=yes ;;\$
\^X             *)      usage ;;\$
        esac\$
done\$

Sowohl cat als auch vis sind auf FreeBSD und OpenBSD im Basissystem vorhanden. Mehr Informationen zu cat und vis findet man in den Manpages cat(1) und vis(1).

 Permalink

Mit pkg_info herausfinden zu welchem Port eine Datei gehört

Möchte man herausfinden, zu welchem Port eine installierte Datei gehört, kann dazu pkg_info mit der -W Option benützt werden:

# pkg_info -W pod2latex
/usr/local/bin/pod2latex was installed by package perl-5.8.8_1

Wird die gesuchte Datei nicht in einem Verzeichnis der $PATH Variable gefunden, muss der komplette Pfad zur Datei angegeben werden:

# pkg_info -W xml2Conf.sh
pkg_info: xml2Conf.sh: file is not in PATH
# pkg_info -W /usr/local/etc/xml2Conf.sh
/usr/local/etc/xml2Conf.sh was installed by package libxml2-2.6.30

Benutzer welche portupgrade installiert haben können dazu auch pkg_which verwenden:

Mehr Informationen zu pkg_info findet man in der Manpage pkg_info(1).

 Permalink

make buildworld Fortschritt beobachten

Möchte man bei einem make buildworld in /usr/src nur angezeigt bekommen, bei welchem Schritt man gerade ist und welches Modul zur Zeit gebaut wird, kann dazu worldtools verwendet werden. Die worldtools findet man im FreeBSD Portsbaum unter sysutils/worldtools:

# cd /usr/ports/sysutils/worldtools && make install clean

Danach kann die Ausgabe von make buildworld mit einer Pipe an whereintheworld weitergeleitet werden. Im folgenden Beispiel wird eine tcsh verwendet und die komplette Ausgabe von make buildworld findet man in der Datei /tmp/build.log:

# cd /usr/src
# make buildworld |& tee /tmp/build.log | whereintheworld
--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
>>> stage 1.1: legacy release compatibility shims
--------------------------------------------------------------
>>> stage 1.2: bootstrap tools
--------------------------------------------------------------
>>> stage 2.1: cleaning up the object tree
--------------------------------------------------------------
>>> stage 2.2: rebuilding the object tree
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
>>> stage 3: cross tools
--------------------------------------------------------------
>>> stage 4.1: building includes
--------------------------------------------------------------
>>> stage 4.2: building libraries
--------------------------------------------------------------
=> kerberos5/lib/libasn1 (obj,depend,all,install)

In der untersten Zeile sieht man, was make buildworld gerade zur Zeit macht. Mehr Informationen zu whereintheworld aus den worldtools findet man in der Manpage whereintheworld(8).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
Comments (3)  Permalink

/etc/master.passwd wiederherstellen

Wurde die /etc/master.passwd gelöscht oder beschädigt, können zum Beispiel keine neue Benutzer mehr angelegt oder die Passwörter der bestehenden Benutzer verändert werden:

# passwd
Changing local password for root
New Password:
Retype New Password:
passwd: /etc/master.passwd: No such file or directory

Mit Hilfe von pwd_unmkdb kann nun die master.passwd aus der /etc/spwd.db generiert werden. pwd_unmkdb findet man im FreeBSD Portsbaum unter sysutils/pwd_unmkdb:

# cd /usr/ports/sysutils/pwd_unmkdb && make install clean

Nun kann ins /etc Verzeichnis gewechselt werden und die master.passwd wiederhergestellt werden:

# cd /etc && pwd_unmkdb
dbopen()'ing spwd.db...  Done
fopen()'ing master.passwd...  Done
Looping through the records in spwd.db...  Done

Mehr Informationen zu pwd_unmkdb findet man in der Manpage pwd_unmkdb(8), Informationen zur master.passwd in passwd(5).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink
Prev Next71-80/84