Manche Programme lassen sich nicht mit mehreren Parameter ausführen:
# atacontrol status ar0 ar1
usage: atacontrol <command> args:
atacontrol list
atacontrol info channel
atacontrol attach channel
atacontrol detach channel
atacontrol reinit channel
atacontrol create type [interleave] disk0 ... diskN
atacontrol delete array
atacontrol addspare array disk
atacontrol rebuild array
atacontrol status array
atacontrol mode device [mode]
atacontrol cap device
atacontrol spindown device [seconds]
Dies kann mit Hilfe von apply umgangen werden. Im folgenden Beispiel wird zuerst der RAID-Status von ar0, danach von ar1 abgefragt. Durch die -d Option wird nur angezeigt was ausgeführt würde, ohne die Befehle auszuführen:
# apply -d "atacontrol status %1" ar0 ar1
exec atacontrol status ar0
exec atacontrol status ar1
# apply "atacontrol status %1" ar0 ar1
ar0: ATA RAID1 status: READY
subdisks:
0 ad4 ONLINE
1 ad6 ONLINE
ar1: ATA RAID1 status: READY
subdisks:
0 ad5 ONLINE
1 ad7 ONLINE
Im folgenden Beispiel wird mit der -2 Option angegeben, dass jeweils zwei Parameter aus der Liste zusammen ausgeführt werden.
# apply -d -2 cmp a1 b1 a2 b2 a3 b3
exec cmp a1 b1
exec cmp a2 b2
exec cmp a3 b3
# apply -2 cmp a1 b1 a2 b2 a3 b3
a1 b1 differ: char 1, line 1
a2 b2 differ: char 1, line 1
a3 b3 differ: char 1, line 1
Auf FreeBSD ist apply standardmässig im Basissystem vorhanden. Mehr Informationen zu apply findet man in der Manpage apply(1).
[ FreeBSD ]
by Beat
@ 30.09.2009 20:28 UTC
Startet man ein FreeBSD-System im Single User Mode, so ist die root-Partition nur lesend ins System eingebunden. Möchte man die root-Parition nun beschreibbar ins System einbinden, so können dazu die -u und die -w Optionen von mount verwendet werden:
# mount
/dev/ad0s1a on / (ufs, local, read-only)
devfs on /dev (devfs, local, multilabel)
# echo test > /test
cannot create /test: Read.only file system
# mount -uw /
# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
# echo test > /test
# cat /test
test
Mehr Informationen findet man in der Manpage mount(8).
Benutzt man die pf-Firewall so können zum Beispiel alle geblockte Pakete aufgezeichet werden. Dazu muss auf FreeBSD der pf-Log-Mechanismus in der /etc/rc.conf aktiviert werden:
pflog_enable="YES"
Regeln in der pf-Konfiguration, die das Schlüsselwort log enthalten, zeichnen nun die Pakete auf, welche auf die Regel zutreffen:
block log all
Die Logdatei kann nun mit Hilfe von tcpdump(1) ausgelesen werden:
# tcpdump -n -e -ttt -r /var/log/pflog
Auch können die aufgezeichneten Pakete in Echtzeit betrachtet werden:
# tcpdump -n -e -ttt -i pflog0
Mehr Informationen findet man in der Manpage pflogd(8).
[ FreeBSD ]
by Beat
@ 29.09.2009 18:42 UTC
Seit FreeBSD 7.2 können auf den Plattformen i386 und amd64 Superpages aktiviert werden. Dadurch kann FreeBSD mit grossen Seiten im virtuellen Speicher umgehen, was vor allem auf neueren Mehrkern-Prozessoren zu Leistungssteigerungen führen kann. Möchte man die Superpages aktivieren, fügt man folgende Zeile in der /boot/loader.conf ein und startet danach das System neu:
vm.pmap.pg_ps_enabled=1
Mit Hilfe von dtach lässt sich wie mit screen und tmux ein Programm vom steuernden Terminal abkoppeln. So kann das Programm weiterhin im Hintergrund laufen. Später kann man sich wieder mit dem Programm verbinden. Im Gegensatz zu screen oder tmux zeichnet dtach die Ausgabe des Programmes im Hintergrund nicht auf, die Programmgrösse ist dafür um einiges kleiner. Daher sollte man zum Beispiel die Ausgabe mit Hilfe von tee(1) in eine Datei schreiben oder ein Programm verwendet, welches regelmässig seine Ausgabe aktualisiert. Im FreeBSD Portbaum findet man dtach unter misc/dtach:
# cd /usr/ports/misc/dtach && make install clean
Im folgenden Beispiel wird eine tcsh gestartet und unter /tmp/tcshsock ein Socket erstellt, mit welchem man sich später wieder verbinden kann.
# dtach -c /tmp/tcshsock tcsh
Möchte man nun die Shell vom Terminal abkoppeln, drückt man Ctrl + \ und die Shell sowie alle darin gestarteten Programme laufen im Hintergrund weiter. Möchte man sich nun wieder mit dem Programm verbinden, verwendet man die -a Option und den entsprechenden Socket:
# dtach -a /tmp/tcshsock
Mehr Informationen zu dtach findet man in der Manpage dtach(1).
Mit Hilfe von pkg_search kann im FreeBSD Portbaum nach Ports gesucht werden. Im Portbaum findet man pkg_serch unter ports-mgmt/pkg_search:
# cd /usr/ports/ports-mgmt/pkg_search && make install clean
Nun kann mit pkg_search nach einem Schlüsselwort gesucht werden:
# pkg_search ports
jasperreports-3.0.0_1 JasperReports is a powerful open source Java reporting tool
p5-UNIVERSAL-exports-0.05 Lightweight, universal exporting of variables
nagios-check_ports-0.6.1 Nagios Plugin to monitor your FreeBSD Ports
kports-0.6.1_5 KDE3-Version of your favorite frontend to the Ports
kports-0.8.1_1 Qt4-Version of your favorite frontend to the Ports
portscout-0.7.4_2 A tool to scan for new versions of FreeBSD ports
portsearch-1.3.2 Port searching tool that supports search by packing list files
portsman-0.2_2 An ncurses based front-end to manage the FreeBSD ports collection
portsopt-1.4 Shows WITH(OUT)-knobs of a port makefile
symports-1.0 Automatically generate symlinks for virtual categories
gtkportscan-1.2_4 A simple port scanner that prints out open ports
portscanner-1.2_1 A simple and easy to use TCP port scanner
portsentry-1.2 Port scan detection and active defense
Sollen zusätzliche Informationen wie die URL des Ports in die Suche aufgenommen werden, kann die -k Option verwedent werden:
# pkg_search -k firefox
de-bsdforen-firefox-searchplugin-0.3_2 Firefox searchplugins for the www.bsdforen.de board and wiki
de-bsdgroup-firefox-searchplugin-0.2_3 Firefox searchplugins for the www.BSDGroup.de board
firefox-2.0.0.20_9,1 Web browser based on the browser portion of Mozilla
firefox-i18n-2.0.0.20 Localized interface for Firefox
firefox-remote-20040803_3 Wrapper scripts for firefox web browser
firefox-3.0.14,1 Web browser based on the browser portion of Mozilla
firefox-3.5.r3,1 Web browser based on the browser portion of Mozilla
firefox3-i18n-3.0.13 Localized interface for Firefox3
firefox-3.5.3,1 Web browser based on the browser portion of Mozilla
firefox35-i18n-3.5.3 Localized interface for Firefox3.5
linux-firefox-3.0.14,1 Web browser based on the browser portion of Mozilla
linux-firefox-devel-3.0.b2_1 Web browser based on the browser portion of Mozilla
conkeror-20090821 A completely keyboard driven browser based on firefox
xpi-firefox-showcase-0.9.5 Easily locate and select any open browser window
xpi-firefoxonwooztalk-0.9.9,1 Meet your World Wide Web neighbors with Firefox
xpi-live_http_headers-0.15 A firefox extension to view HTTP headers
xpi-modify_headers-0.6.6 A firefox extension to manipulate HTTP headers
xpi-twitterfox-1.8.3 twitterFox firefox plugin.
Möchte man angezeigen in welchem Verzeichnis sich der Port befindet, verwendet man die -r Option:
# pkg_search -r firefox
de-bsdforen-firefox-searchplugin-0.3_2 /usr/ports/german/bsdforen-firefox-searchplugin
de-bsdgroup-firefox-searchplugin-0.2_3 /usr/ports/german/bsdgroup-firefox-searchplugin
firefox-2.0.0.20_9,1 /usr/ports/www/firefox
firefox-i18n-2.0.0.20 /usr/ports/www/firefox-i18n
firefox-remote-20040803_3 /usr/ports/www/firefox-remote
firefox-3.0.14,1 /usr/ports/www/firefox3
firefox-3.5.r3,1 /usr/ports/www/firefox3-devel
firefox3-i18n-3.0.13 /usr/ports/www/firefox3-i18n
firefox-3.5.3,1 /usr/ports/www/firefox35
firefox35-i18n-3.5.3 /usr/ports/www/firefox35-i18n
linux-firefox-3.0.14,1 /usr/ports/www/linux-firefox
linux-firefox-devel-3.0.b2_1 /usr/ports/www/linux-firefox-devel
xpi-firefox-showcase-0.9.5 /usr/ports/www/xpi-firefox-showcase
xpi-firefoxonwooztalk-0.9.9,1 /usr/ports/www/xpi-firefoxonwooztalk
Mehr Informationen zu pkg_search findet man in der Manpage pkg_search(1).
Möchte man den Netzwerkdurchsatz in der Konsole graphisch darstellen, so kann man dazu nload verwenden. Im FreeBSD Portbaum findet man nload unter net/nload:
# cd /usr/ports/net/nload && make install clean
Beim Starten von nload muss nun die Netzwerkschnittstelle angegeben werden, welche beobachtet werden soll:
# nload <Netzwerkschnittstelle>
Danach wird der aktuelle Durchsatz der Schnittstelle regelmässig angezeigt:
Device wlan0 [192.168.2.40] (1/1):
========================================================================================
Incoming:
. .. ..
. .#. |# ### .##|||
########. ### .######.
######### .###| ########
######### ##### .########
|######### ##### ######### #
########## ##### ######### #
########## . ##### ######### . # Curr: 4.16 MBit/s
.########### #. ###### . ##########..# # Avg: 3.03 MBit/s
.############ ## ####### #| ############### Min: 0.00 Bit/s
############# ## |####### ## ############### Max: 6.78 MBit/s
|############# .|###.######## || |################## Ttl: 113.89 MByte
Outgoing:
.. ..
.##||| # .##.
.######. ## .|...| .|||||#. ######
######## ## ########|.#. |######## .######
.######## ## ############ #########|#######
######### ### ############## |#################
######### ### ##############|..|. .##################
######### . #### ####################################### Curr: 6.26 MBit/s
. ##########..# ####||####################################### Avg: 3.80 MBit/s
#| ########################################################### Min: 0.00 Bit/s
## ########################################################### Max: 6.83 MBit/s
|| |############################################################## Ttl: 68.67 MByte
Möchte man mehrere Schnittstellen gleichzeitig beobachten, so kann dazu die -m Option verwendet werden, allerdings werden dann die Graphen nicht mehr dargestellt:
# nload -m wlan0 em 0
Device wlan0 [192.168.2.40] (1/2):
==================================================================
Incoming: Curr: 1.14 kBit/s Curr: 0.41 Bit/s
Avg: 1.05 kBit/s Avg: 0.27 Bit/s
Min: 0.45 Bit/s in: 0.00 Bit/s
Max: 1.14 kBit/s Max: 0.41 Bit/s
Ttl: 3.12 MByte Ttl: 349.97 kByte
Device em0 [10.0.0.1] (2/2):
===================================================================
Incoming: Outgoing:
Curr: 1.03 kBit/s Curr: 0.34 Bit/s
Avg: 0.78 Bit/s Avg: 0.43 Bit/s
Min: 0.23 Bit/s Min: 0.11 Bit/s
Max: 2.03 kBit/s Max: 0.98 Bit/s
Ttl: 5.01 MByte Ttl: 234.07 kByte
Mehr Informationen zu nload findet man in der Manpage nload(1).
Mit Hilfe von pver werden alle installierten Ports mit dem Portindex verglichen und jene Ports aufgelistet von welchen eine neuere Version im Portbaum vorhanden ist. Im FreeBSD Portbaum findet man pver unter ports-mgmt/pver:
# cd /usr/ports/ports-mgmt/pver && make install clean
Zuerst muss vom aktuellen Portindex mit Hife von pver_dbgen eine Datenbank erstellt werden:
# pver_dbgen
Ist die Datenbank angelegt, können die installierten Ports mit der Index-Datenbank verglichen werden. In der zweiten Spalte wird die Version des installierten Ports, in der dritten Spalte die Version welche im Index vorhanden ist angezeigt:
# pver
portmaster 2.10 2.11
libxml2 2.7.3 2.7.3_1
glib 2.20.4 2.20.5
compat5x-i386 5.4.0.8_9 5.4.0.8_11
gtk 2.16.5_1 2.16.6
pptpclient 1.7.2 1.7.2_2
help2man 1.36.4_2 1.36.4_3
pinentry 0.7.6 0.7.6_1
subversion-freebsd 1.6.4 1.6.5
diablo-jdk 1.6.0.07.02_3 1.6.0.07.02_5
firefox-3.6.a1,1 is not in /usr/ports/INDEX
pulseaudio 0.9.14_5 0.9.15_4
compat6x-i386 6.4.604000.200810 6.4.604000.200810_3
opera-devel 10.00.b2_1,1 10.00.b3_1,1
fortune-mod-hitchhiker-20050611 is not in /usr/ports/INDEX
libxul 1.9.0.11_1 1.9.0.13
smartmontools 5.38_6 5.38_7
pdfjam 1.21_1 1.21_2
[ FreeBSD ]
by Beat
@ 31.08.2009 10:12 UTC
Ändert man einen FreeBSD -Port und möchte dazu Patches erstellen, welche im Port unter dem Verzeichnis files gespeichert werden, so muss man diese nicht unbedingt von Hand mit diff(1) erzeugen. Zuerst erstellt man von jeder Datei, die man verändern möchte, unterhalb des work/-Verzeichnisses eine Kopie mit der Endung .orig und bearbeitet das Original.
# cd /usr/ports/security/nss/work/nss-3.12.4/mozilla/security/nss/lib/nss/
# ls -l config.mk*
-rw-r----- 1 root wheel 3181 30 Aug 22:27 config.mk
-rw-r----- 1 root wheel 3182 11 Jun 02:55 config.mk.orig
Sind alle Änderungen gemacht, geht man in das Port-Verzeichnis und gibt make makepatch ein:
# cd /usr/ports/security/nss
# ls -l files
total 0
# make makepatch
/usr/bin/diff -ud ./cmd/modutil/modutil.h.orig ./cmd/modutil/modutil.h > /usr/ports/security/nss/files/patch-cmd__modutil__modutil.h
/usr/bin/diff -ud ./cmd/modutil/pk11.c.orig ./cmd/modutil/pk11.c > /usr/ports/security/nss/files/patch-cmd__modutil__pk11.c
/usr/bin/diff -ud ./cmd/platlibs.mk.orig ./cmd/platlibs.mk > /usr/ports/security/nss/files/patch-cmd__platlibs.mk
/usr/bin/diff -ud ./tests/common/init.sh.orig ./tests/common/init.sh > /usr/ports/security/nss/files/patch-tests__common__init.sh
/usr/bin/diff -ud ./lib/ckfw/dbm/ckdbm.h.orig ./lib/ckfw/dbm/ckdbm.h > /usr/ports/security/nss/files/patch-lib__ckfw__dbm__ckdbm.h
/usr/bin/diff -ud ./lib/ssl/config.mk.orig ./lib/ssl/config.mk > /usr/ports/security/nss/files/patch-lib__ssl__config.mk
/usr/bin/diff -ud ./lib/smime/config.mk.orig ./lib/smime/config.mk > /usr/ports/security/nss/files/patch-lib__smime__config.mk
/usr/bin/diff -ud ./lib/certdb/xauthkid.c.orig ./lib/certdb/xauthkid.c > /usr/ports/security/nss/files/patch-lib__certdb__xauthkid.c
/usr/bin/diff -ud ./lib/certdb/xbsconst.c.orig ./lib/certdb/xbsconst.c > /usr/ports/security/nss/files/patch-lib__certdb__xbsconst.c
/usr/bin/diff -ud ./lib/certdb/xconst.c.orig ./lib/certdb/xconst.c > /usr/ports/security/nss/files/patch-lib__certdb__xconst.c
/usr/bin/diff -ud ./lib/softoken/legacydb/cdbhdl.h.orig ./lib/softoken/legacydb/cdbhdl.h > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__cdbhdl.h
/usr/bin/diff -ud ./lib/softoken/legacydb/dbmshim.c.orig ./lib/softoken/legacydb/dbmshim.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__dbmshim.c
/usr/bin/diff -ud ./lib/softoken/legacydb/keydb.c.orig ./lib/softoken/legacydb/keydb.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__keydb.c
/usr/bin/diff -ud ./lib/softoken/legacydb/pcertdb.c.orig ./lib/softoken/legacydb/pcertdb.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__pcertdb.c
/usr/bin/diff -ud ./lib/softoken/legacydb/pk11db.c.orig ./lib/softoken/legacydb/pk11db.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__pk11db.c
/usr/bin/diff -ud ./lib/softoken/legacydb/keydbi.h.orig ./lib/softoken/legacydb/keydbi.h > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__keydbi.h
/usr/bin/diff -ud ./lib/softoken/config.mk.orig ./lib/softoken/config.mk > /usr/ports/security/nss/files/patch-lib__softoken__config.mk
/usr/bin/diff -ud ./lib/nss/config.mk.orig ./lib/nss/config.mk > /usr/ports/security/nss/files/patch-lib__nss__config.mk
/usr/bin/diff -ud ./lib/freebl/config.mk.orig ./lib/freebl/config.mk > /usr/ports/security/nss/files/patch-lib__freebl__config.mk
/usr/bin/diff -ud ./lib/pk11wrap/secmodi.h.orig ./lib/pk11wrap/secmodi.h > /usr/ports/security/nss/files/patch-lib__pk11wrap__secmodi.h
/usr/bin/diff -ud ./Makefile.orig ./Makefile > /usr/ports/security/nss/files/patch-Makefile
# ls -l files
total 42
-rw-r--r-- 1 root wheel 434 30 Aug 22:29 patch-Makefile
-rw-r--r-- 1 root wheel 451 30 Aug 22:29 patch-cmd__modutil__modutil.h
-rw-r--r-- 1 root wheel 1448 30 Aug 22:29 patch-cmd__modutil__pk11.c
-rw-r--r-- 1 root wheel 635 30 Aug 22:29 patch-cmd__platlibs.mk
-rw-r--r-- 1 root wheel 341 30 Aug 22:29 patch-lib__certdb__xauthkid.c
-rw-r--r-- 1 root wheel 509 30 Aug 22:29 patch-lib__certdb__xbsconst.c
-rw-r--r-- 1 root wheel 481 30 Aug 22:29 patch-lib__certdb__xconst.c
-rw-r--r-- 1 root wheel 285 30 Aug 22:29 patch-lib__ckfw__dbm__ckdbm.h
-rw-r--r-- 1 root wheel 291 30 Aug 22:29 patch-lib__freebl__config.mk
-rw-r--r-- 1 root wheel 284 30 Aug 22:29 patch-lib__nss__config.mk
-rw-r--r-- 1 root wheel 301 30 Aug 22:29 patch-lib__pk11wrap__secmodi.h
-rw-r--r-- 1 root wheel 311 30 Aug 22:29 patch-lib__smime__config.mk
-rw-r--r-- 1 root wheel 296 30 Aug 22:29 patch-lib__softoken__config.mk
-rw-r--r-- 1 root wheel 333 30 Aug 22:29 patch-lib__softoken__legacydb__cdbhdl.h
-rw-r--r-- 1 root wheel 372 30 Aug 22:29 patch-lib__softoken__legacydb__dbmshim.c
-rw-r--r-- 1 root wheel 332 30 Aug 22:29 patch-lib__softoken__legacydb__keydb.c
-rw-r--r-- 1 root wheel 361 30 Aug 22:29 patch-lib__softoken__legacydb__keydbi.h
-rw-r--r-- 1 root wheel 341 30 Aug 22:29 patch-lib__softoken__legacydb__pcertdb.c
-rw-r--r-- 1 root wheel 353 30 Aug 22:29 patch-lib__softoken__legacydb__pk11db.c
-rw-r--r-- 1 root wheel 368 30 Aug 22:29 patch-lib__ssl__config.mk
-rw-r--r-- 1 root wheel 495 30 Aug 22:29 patch-tests__common__init.sh
Nun wurde von allen veränderten Dateien ein Patch im Verzeichnis files erstellt.
[ FreeBSD ]
by Beat
@ 31.08.2009 09:51 UTC
Möchte man einen Port installieren, vorher aber herausfinden welche Ports als Abhängigkeiten dieses Ports installiert werden, so kann dies mit make missing im Portverzeichnis gemacht werden:
# cd /usr/ports/editors/openoffice.org-3
# make missing
sysutils/coreutils
devel/patch
archivers/p5-Archive-Zip
devel/apache-ant
Mehr Informationen zu den make-Targes des Portbaums findet man in der Manpage ports(7).