BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

RFC-Dokumente suchen und anzeigen

Sucht man nach einem RFC-Dokument oder möchte man etwas darin nachlesen, so kann dies mit RFC Util vereinfacht werden. Im FreeBSD Portbaum findet man RFC Util unter misc/rfc:

# cd /usr/ports/misc/rfc && make install clean

Vor dem ersten Gebraucht muss mit der -i Option ein Index der verfügbaren RFC-Dokumente erstellt werden:

# rfc -i
Modem users one moment, it's about 400k (doesn't need to be updated often)
original lines  = 0     /usr/local/etc/rfc-index
new lines       = 21196 /usr/loca/etc/rfc-index

Mit der -k Option können die RFC-Dokumente nach einem Wort durchsucht werden:

# rfc -k smtp
The Result:
0876 Survey of SMTP implementations. D. Smallberg. September 1983.
     (Format: TXT=37775 bytes) (Status: UNKNOWN)
1047 Duplicate messages and SMTP. C. Partridge. February 1988.
     (Format: TXT=5888 bytes) (Status: UNKNOWN)
1090 SMTP on X.25. R. Ullmann. February 1989. (Format: TXT=6141 bytes)
     (Status: UNKNOWN)

[...]

Gibt man direkt eine RFC-Nummer an, werden Informationen zu diesem RFC angezeigt:

# rfc 5321
The Result:
5321 Simple Mail Transfer Protocol. J. Klensin. October 2008. (Format:
     TXT=225929 bytes) (Obsoletes RFC2821) (Updates RFC1123) (Status:
     DRAFT STANDARD)

Mit der -l Option wird das angegebene RFC-Dokument angezeigt:

# rfc -l 5321

Möchte man das RFC-Dokument in einer Textdatei speichern, kann dies mit der -d Option gemacht werden. Zusätzlich muss noch ein Verzeichnis angegeben werden, in welchem das Dokument erstellt werden soll:

# rfc -d 5321 /tmp/
Making... /tmp/rfc5321.txt
lines = 5323 .. Done.

Mehr Informationen zu RFC Util findet man in der Manpage rfc(1).

 Permalink

Befehl auf mehreren Rechnern gleichzeitig ausführen

Möchte man Befehle via SSH auf mehreren Servern ausführen, so kann dies mit clusterssh vereinfacht werden. Im FreeBSD Portbaum findet man clusterssh unter security/clusterssh:

# cd /usr/ports/security/clusterssh && make install clean

Beim Aufruf von clusterssh müssen alle Rechner angegeben werden, zu denen eine SSH Verbindung aufgebaut werden soll.

# cssh <benutzer>@<rechner> [<benutzer>@<rechner>] [...]

Clusterssh öffnet für jede SSH Verbindung einen xterm und ein clusterssh-Kontrollfenster. In jedem dieser Terminals kann nun wie gewohnt gearbeitet werden. Möchte man jedoch einen Befehl auf allen Rechnern absetzen, gibt man ihn in das Textfeld im clusterssh-Kontrollfenster ein, wodurch dieser zu allen Rechnern gesendet wird:

clusterssh

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

Comments (1)  Permalink

Festplattenstatistiken anzeigen

Mit Hilfe von devstat lassen sich Statistiken zu den vorhandenen Festplatten anzeigen. Im FreeBSD Portbaum findet man devstat unter sysutils/devstat:

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

Nun lassen sich unter anderem die Anzahl gelesener und geschriebener Bytes, die Anzahl Schreib- und Leseoperationen sowie die Blockgrösse anzeigen:

# devstat da0
da0:
        1040333796616 bytes read
        7252471400448 bytes written
        0 bytes freed
        247638123 reads
        451008032 writes
        0 frees
        0 other
        duration:
                821293 11997012304437948040/2^64 sec reads
                14473429 7941757553516418738/2^64 sec writes
                0 0/2^64 sec frees
        895818 12812851478818415562/2^64 sec busy time
        5 18242368001486082/2^64 sec creation time
        512 block size
        tags sent:
                698646155 simple
                0 ordered
                0 head of queue
        supported statistics measurements flags: 0
        device type: 0
        devstat list insert priority: 4095

Alle angezeigten Werte sind in der Manpage devstat(9) beschrieben. Mehr Informationen zu devstat findet man in der Manpage devstat(8).

 Permalink

Portbaum mit virtuellen Kategorien erstellen

Im FreeBSD Portbaum werden die Port-Kategorien durch Verzeichnisse dargestellt. Daneben werden bestimmte Ports auch in virtuelle Kategorien eingeteilt. So werden zum Beispiel alle Ports welche ein Kernelmodul installieren, in die virtuelle Kategorie kld eingeteilt. Für virtuelle Kategorien ist im Portbaum kein Verzeichnis vorhanden. Mit Hilfe von symports kann ein Portbaum erstellt werden, in welchem auch virtuelle Kategorien durch Verzeichnisse dargestellt werden:

# cd /usr/ports/ports-mgmt/symports && make install clean

Führt man symports aus, wird im aktuellen Verzeichnis der neue Portbaum erstellt:

# symports
accessibility/accerciser:
accessibility/at-poke:
accessibility/at-spi:
[...]
x11-wm/xfce4-session:
x11-wm/xfce4-wm:
x11-wm/xmonad:
x11-wm/xmonad-contrib:

Darin sind nun alle Kategorien verfügbar:

# ls
accessibility/ elisp/         java/          parallel/      tcl/
afterstep/     emulators/     kde/           pear/          textproc/
arabic/        finance/       kld/           perl5/         tk/
archivers/     french/        korean/        plan9/         ukrainian/
astro/         ftp/           lang/          polish/        vietnamese/
audio/         games/         linux/         ports-mgmt/    windowmaker/
benchmarks/    geography/     lisp/          portuguese/    www/
biology/       german/        mail/          print/         x11/
cad/           gnome/         math/          python/        x11-clocks/
chinese/       gnustep/       mbone/         ruby/          x11-drivers/
comms/         graphics/      misc/          rubygems/      x11-fm/
converters/    hamradio/      multimedia/    russian/       x11-fonts/
databases/     haskell/       net/           scheme/        x11-servers/
deskutils/     hebrew/        net-im/        science/       x11-themes/
devel/         hungarian/     net-mgmt/      security/      x11-toolkits/
dns/           ipv6/          net-p2p/       shells/        x11-wm/
docs/          irc/           news/          spanish/       xfce/
editors/       japanese/      palm/          sysutils/      zope/

In den jeweiligen Verzichnis sind nun alle Ports dieser Kategorie mit einem symbolischen Link auf den Port im Portbaum dargestellt:

# cd kld
# ls -l
total 0
lrwxr-xr-x  1 root  wheel  21 25 Jun 23:38 acx100-net@ -> /usr/ports/net/acx100
lrwxr-xr-x  1 root  wheel  28 25 Jun 23:26 aureal-kmod-audio@ -> /usr/ports/audio/aureal-kmod
lrwxr-xr-x  1 root  wheel  28 25 Jun 23:42 biosfont-sysutils@ -> /usr/ports/sysutils/biosfont
lrwxr-xr-x  1 root  wheel  31 25 Jun 23:27 bluez-firmware-comms@ -> /usr/ports/comms/bluez-firmware
lrwxr-xr-x  1 root  wheel  32 25 Jun 23:38 bwi-firmware-kmod-net@ -> /usr/ports/net/bwi-firmware-kmod
lrwxr-xr-x  1 root  wheel  26 25 Jun 23:38 cx88-multimedia@ -> /usr/ports/multimedia/cx88
lrwxr-xr-x  1 root  wheel  26 25 Jun 23:42 devcpu-sysutils@ -> /usr/ports/sysutils/devcpu
lrwxr-xr-x  1 root  wheel  24 25 Jun 23:26 emu10kx-audio@ -> /usr/ports/audio/emu10kx
lrwxr-xr-x  1 root  wheel  23 25 Jun 23:42 est-sysutils@ -> /usr/ports/sysutils/est
[...]

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

 Permalink

Liste der besuchten Verzeichnisse merken

Verwendet man die tcsh, so können die besuchten Verzeichnisse mit Hilfe von pushd zwischengespeichert werden:

# pwd
/usr/home/test
# pushd /usr/local/tinderbox
/usr/local/tinderbox ~ 
# pwd
/usr/local/tinderbox
# pushd /tmp
/tmp /usr/local/tinderbox ~

Die gemerkten Verzeichnisse können durch dirs angezeigt werden:

# dirs 
/tmp /usr/local/tinderbox ~ 

Verwendet man die -v Option, werden die gemerkten Verzeichnisse auf eine andere Weise dargestellt:

# dirs -v
0       /tmp
1       /usr/local/tinderbox
2       ~

Mit popd kann man wieder in die gemerkten Verzeichnisse zurückwechseln. Dabei wechselt man bei der ersten Eingabe von popd in das erste gespeicherte Verzeichnis, bei der zweiten Eingabe in das zweite gespeicherte Verzeichnis usw.

# pwd
/tmp
# popd
/usr/local/tinderbox ~ 
# pwd
/usr/local/tinderbox
# popd
~ 
# pwd
/usr/home/test

Mehr Informationen zur tcsh findet man in der Manpage tcsh(1).

Related Entries:
Wort in der tcsh löschen
Programm mit which finden
foreach-Schleife in der tcsh
tcsh bei Inaktivität beenden
Vervollständigung in der tcsh
 Permalink

Alte Dateien in /tmp täglich automatisch löschen

Möchte man täglich alte Dateien in /tmp löschen, kann folgende Zeile in der /etc/periodic.conf eingefügt werden:

daily_clean_tmps_enable="YES"

Danach werden täglich die Dateien in /tmp gelöscht, die seit drei Tagen nicht mehr verwendet wurden. Die gelöschten Dateien werden im täglichen Statusmail angezeigt:

[...]
Removing old temporary files:
  /tmp/piwik/db.opt
  /tmp/piwik/piwik_user.frm
  /tmp/piwik/piwik_user.MYI
  /tmp/piwik/piwik_user.MYD

[...]

Möchte man die Anzahl Tage verändern, so kann dies durch setzen von daily_clean_tmps_days gemacht werden. Dateien die nicht gelöscht werden sollen, können in daily_clean_tmps_ignore aufgeführt werden. Sollen die gelöschten Dateien nicht im täglichen Statusmail aufgeführt werden, kann daily_clean_tmps_verbose auf NO gesetzt werden. Standardmässig sind die Variablen folgendermassen gesetzt:

daily_clean_tmps_days="3"                                                   # If not accessed for
daily_clean_tmps_ignore=".X*-lock .X11-unix .ICE-unix .font-unix .XIM-unix"
daily_clean_tmps_ignore="$daily_clean_tmps_ignore quota.user quota.group"   # Don't delete these
daily_clean_tmps_verbose="YES"                                              # Mention files deleted
 Permalink

Ports wöchentlich auf neue Versionen prüfen

Möchte man wöchentlich die installierten Ports angezeigt bekommen, von denen im Portsbaum eine neuere Version existiert, kann folgende Zeile in der /etc/periodic.conf eingefügt werden:

weekly_status_pkg_enable="YES"

Danach werden die entsprechenden Ports im wöchentlichen Statusmail aufgeführt:

[...]

Check for out of date packages:
  ccache-2.4_7 needs updating (port has 2.4_8)
  maatkit-1972 needs updating (port has 3119)
  mysql-client-5.0.75 needs updating (port has 5.0.83)
  mysql-server-5.0.75 needs updating (port has 5.0.83)
  portlint-2.11.1 needs updating (port has 2.11.2)
  postgresql-client-8.2.9 needs updating (port has 8.2.13)
  postgresql-server-8.2.9 needs updating (port has 8.2.13)
  rrdtool-1.2.29 needs updating (port has 1.2.30)
  rsync-3.0.3 needs updating (port has 3.0.6)
  screen-4.0.3_5 needs updating (port has 4.0.3_6)
  subversion-freebsd-1.5.5_1 needs updating (port has 1.6.2)

[...]
 Permalink

Symbolische Links aufräumen

Mit Hilfe von symlinks lassen sich symbolische Links innerhalb eines Systems finden und deren Status angezeigen. Im FreeBSD Portbaum findet man symlinks unter sysutils/symlinks:

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

Nun kann mit Hilfe von symlinks in einem Verzeichnis (in diesem Beispiel das Verzeichnis c) nach symbolischen Links gesucht werden. Mit der -v Option werden auch relative Links angezeigt. Die -s Option sucht nach Links welche ihr Ziel auch auf einem kürzerem Weg erreichen könnten. Diese werden als "lenghty" gekennzeichnet. Links welche als "dangling" markiert sind, zeigen auf ein Ziel welches nicht mehr existiert. Als "messy" gekennzeichnete Links enthalten unnötige Zeichen:

# symlinks -sv c
relative: /tmp/a/b/c/foo -> ../foo
absolute: /tmp/a/b/c/bar -> /tmp/a/b/foo
lengthy:  /tmp/a/b/c/ok -> ../c/test
dangling: /tmp/a/b/c/fail -> ../c/tes
messy:    /tmp/a/b/c/mess -> ../c//test

Mit der -d Option können nun Links entfernt werden, deren Ziel nicht mehr existiert:

# symlinks -d c
absolute: /tmp/a/b/c/bar -> /tmp/a/b/foo
dangling: /tmp/a/b/c/fail -> ../c/tes
deleted:  /tmp/a/b/c/fail -> ../c/tes
messy:    /tmp/a/b/c/mess -> ../c//test

Verwendet man die -r Option, können auch Verzeichnisse rekursiv nach symbolischen Links durchsucht werden. Durch die -c Option können absolute in relative Links umgewandelt werden. Ausserdem werden dabei überflüssige Zeichen aus den Links entfernt. Mit der -t Option können die Änderungen zuerst begutachtet werden, ohne das diese ausgeführt werden:

#  symlinks -rt b
absolute: /tmp/a/b/c/bar -> /tmp/a/b/foo
changed:  /tmp/a/b/c/bar -> ../../../../tmp/a/b/foo
messy:    /tmp/a/b/c/mess -> ../c//test
changed:  /tmp/a/b/c/mess -> ../c/test
# symlinks -rc b
absolute: /tmp/a/b/c/bar -> /tmp/a/b/foo
changed:  /tmp/a/b/c/bar -> ../../../../tmp/a/b/foo
messy:    /tmp/a/b/c/mess -> ../c//test
changed:  /tmp/a/b/c/mess -> ../c/test

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

 Permalink

Server mit Quellcode eines Ports zufällig wählen

Sind in einem FreeBSD-Port mehrere Server angegeben, von denen der Quellcode eines Programms heruntergeladen wird, so wird die Liste der Server der Reihe nach abgearbeite, bis der Quellcode erfolgreich heruntergeladen werden kann. Möchte man die Reihenfolge der Server zufällig wählen, kann folgender Eintrag in der /etc/make.conf gemacht werden:

RANDOMIZE_MASTER_SITES=yes

Damit die Server zufällig ausgewählt werden können, muss /usr/games/random installiert sein. Ist dies nicht der Fall, so kann random(6) wie folgt nachinstalliert werden:

# cd /usr/src/games/random && make && make install

 Permalink

Einstellungen des FreeBSD-Bootmanagers ändern

Verwendet man den FreeBSD-Bootmanager um auf einem Rechner verschiedene installierte Betriebssysteme starten zu können, so kann mit boot0cfg und der -v Option die aktuelle Konfiguration ausgelesen werden:

# boot0cfg -v /dev/ad4
#   flag     start chs   type       end chs       offset         size
1   0x00      0:  1: 1   0x07   1023:119:63           63    245866257
2   0x00   1023:255:63   0x12   1023:239:63    474541200     13849920
3   0x80   1023:255:63   0xa5   1023:254:63    245866320    228661650

version=2.0  drive=0x80  mask=0xf  ticks=182  bell=# (0x23)
options=packet,noupdate,nosetdrv
volume serial ID b8b8-b8b8
default_selection=F1 (Slice 1)

Möchte man nun ändern, von welchem Slice beim nächsten Neustart standardmässig gestartet werden soll, so kann die Slice-Nummer mit der -s Option an boot0cfg übergeben werden:

# boot0cfg -s 3 /dev/ad4
# boot0cfg -v /dev/ad4
#   flag     start chs   type       end chs       offset         size
1   0x00      0:  1: 1   0x07   1023:119:63           63    245866257
2   0x00   1023:255:63   0x12   1023:239:63    474541200     13849920
3   0x80   1023:255:63   0xa5   1023:254:63    245866320    228661650

version=2.0  drive=0x80  mask=0xf  ticks=182  bell=# (0x23)
options=packet,noupdate,nosetdrv
volume serial ID b8b8-b8b8
default_selection=F3 (Slice 3)

Standardmässig wartet der Bootmanager 10 Sekunden (was ~182 Ticks entspricht), bevor vom konfigurierten Standardslice gebootet wird. Möchte man diese Dauer ändern, kann mit der -t Option die Anzahl Ticks angegeben werden, wie lange gewartet werden soll. Im folgenden Beispiel wird die Zeit auf 91 Ticks eingestellt, was ~5 Sekunden entspricht:

# boot0cfg -t 91 /dev/ad4
# boot0cfg -v /dev/ad4
#   flag     start chs   type       end chs       offset         size
1   0x00      0:  1: 1   0x07   1023:119:63           63    245866257
2   0x00   1023:255:63   0x12   1023:239:63    474541200     13849920
3   0x80   1023:255:63   0xa5   1023:254:63    245866320    228661650

version=2.0  drive=0x80  mask=0xf  ticks=91  bell=# (0x23)
options=packet,noupdate,nosetdrv
volume serial ID b8b8-b8b8
default_selection=F3 (Slice 3)

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

 Permalink
Prev Next181-190/521