BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Änderungen eines Patches übersichtlich darstellen

Mit Hilfe von diffstat lassen sich die Änderungen eines Patches übersichtlich darstellen. Im FreeBSD Portbaum findet man diffstat unter textproc/diffstat:

# cd /usr/ports/textproc/diffstat && make install clean

Nun kann diffstat aufgerufen werden, wobei die Informationen zum Patch dargestellt werden. So wird zum Beispiel die Anzahl Änderungen pro Datei angezeigt und ein Histogramm zeigt an, wie die Anzahl der hinzugefügten und entfernten Zeilen verteilt sind.

# diffstat logfile_markup.patch
 Makefile                                        |   27 +--
 sql/genschema                                   |    4 
 sql/schema.mysql.pre                            |    9 +
 sql/schema.pgsql.pre                            |    9 +
 sql/values.lp                                   |   22 +++
 webui/core/LogfilePattern.php                   |   67 +++++++++
 webui/core/PortFailPattern.php                  |   62 ++++++++
 webui/core/TinderboxDS.php                      |   24 +++
 webui/index.php                                 |   14 +
 webui/module/moduleLogs.php                     |  174 ++++++++++++++++++++++++
 webui/module/modulePorts.php                    |    3 
 webui/templates/default/describe_port.tpl       |    1 
 webui/templates/default/display_markup_log.tpl  |  162 ++++++++++++++++++++++
 webui/templates/default/failed_buildports.tpl   |    1 
 webui/templates/default/latest_buildports.tpl   |    1 
 webui/templates/default/list_buildports.tpl     |    1 
 webui/templates/default/tinderstyle.css         |    3 
 webui/templates/paefchen/describe_port.tpl      |    1 
 webui/templates/paefchen/display_markup_log.tpl |  156 +++++++++++++++++++++
 webui/templates/paefchen/failed_buildports.tpl  |    3 
 webui/templates/paefchen/latest_buildports.tpl  |    1 
 webui/templates/paefchen/list_buildports.tpl    |    1 
 webui/templates/paefchen/tinderstyle.css        |    9 +
 23 files changed, 739 insertions(+), 16 deletions(-)

Soll anstelle des Histogramms die Anzahl hinzugefügter, entfernter oder geänderter Zeilen angezeigt werden, so kann die -f 0 Option verwendent werden:

# diffstat -f 0 mem_info.patch 
 core/functions.php                  |    7     7 +     0 -     0 !
 inc_tinderbox.php.dist              |    1     1 +     0 -     0 !
 module/moduleBuildPorts.php         |   33     30 +    3 -     0 !
 module/moduleLogs.php               |   12     11 +    1 -     0 !
 module/modulePortFailureReasons.php |   11     10 +    1 -     0 !
 module/modulePorts.php              |   11     10 +    1 -     0 !
 templates/paefchen/footer.inc.tpl   |    1     1 +     0 -     0 !
 7 files changed, 70 insertions(+), 6 deletions(-)

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

 Permalink

An- und Abmelden von Benutzern beobachten

Mit Hilfe von wuzzah kann beobachtet werden, wann sich Benutzer an einem System an- und wieder abmelden. Im FreeBSD Portbaum findet man wuzzah unter sysutils/wuzzah:

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

wuzzah kann mit der -a Option gestartet werden, wonach man sofort alle angemeldeten Benutzer sieht. Meldet sich nun ein Benutzer an oder ab, so wird dies sofort angezeigt:

# wuzzah -a
(20:13:07)  beat logged on  :0       from hostname
(21:27:05)  beat logged on  ttyp4    from hostname
(21:42:55)  beat logged on  ttyp3    from hostname
(22:04:07)  beat logged on  ttyp2    from hostname
(22:49:13)  beat logged on  ttyp1    from hostname
(22:47:13)  test logged on  ttyp5    from hostname
(23:17:16)  test logged off ttyp5    from hostname

Möchte man nur bestimmte Benutzer beobachten, kann dazu die Datei ~/.wuzzah angelegt werden und jeder Benutzername, der beobachtet werden soll, in einer eigenen Zeile aufgeführt werden. Nun kann wuzzah ohne eine Option aufgerufen werden, wobei man nur noch die gewählten Benutzer sieht:

# who
beat             ttyp1    12 Dez 19:32 (:0.0)
beat             ttyp2    12 Dez 20:27 (:0.0)
test             ttyp4    12 Dez 21:35 (:0.0)
# cat ~/.wuzzah
test
guest
# wuzzah
(23:21:11)  test logged on  ttyp4    from hostname

Durch das Drücken von Ctrl+C wird wuzzah beendet. Mehr Informationen zu wuzzah findet man in der Manpage wuzzah(1).

 Permalink

Fehlende Shared-Libraries identifizieren

Mit Hilfe von libchk können Programme identifiziert werden, die gegen Shared-Libraries gelinkt sind, welche jedoch nicht mehr existieren. Im FreeBSD Portbaum findet man libchk unter sysutlis/libchk:

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

Standardmässig durchsucht libchk zur Zeit auch noch Verzeichnisse unter dem Verzeichnis /usr/X11R6, welches auf neueren Systemen nach /usr/local gelinkt ist. Dies kann mit der -x Option ausgeschlossen werden. Führt man libchk nun aus, werden alle Programme angezeigt, bei welchen Shared-Libraries fehlen. Auch werden dabei alle Shared-Libraries aufgelistet, welche von keinem Programm benötigt werden. Jedoch sollten diese nicht einfach deinstalliert werden ohne dass vorher genau überprüft wird, dass diese wirklich nicht mehr gebraucht werden.

# libchk -x /usr/X11R6
Will look into:
        /bin
        /lib
        /sbin
        /usr/bin
        /usr/games
        /usr/lib
        /usr/libexec
        /usr/local/bin
        /usr/local/lib
        /usr/local/libexec
        /usr/local/sbin
        /usr/sbin
Unresolvable link(s) found in: /usr/lib/libssh.so.3
        libasn1.so.8
        libroken.so.8
        libkrb5.so.8
Unresolvable link(s) found in: /usr/local/bin/mutt
        libasn1.so.8
        libroken.so.8
        libkrb5.so.8
Unreferenced library: /usr/local/lib/gcc-4.2.3/libffi.so.4
Unreferenced library: /usr/local/lib/gcc-4.2.3/libgfortran.so.2
Unreferenced library: /usr/local/lib/gcc-4.2.3/libgomp.so.1
Unreferenced library: /usr/local/lib/gcc-4.2.3/libmudflap.so.0
Unreferenced library: /usr/local/lib/gcc-4.2.3/libmudflapth.so.0
Unreferenced library: /usr/local/lib/gcc-4.2.3/libobjc.so.2
Unreferenced library: /usr/local/lib/gcc/i386-portbld-freebsd7.1/3.4.6/libg2c.so.0

Das Fehlen der Shared-Libraries kann danach mit ldd(1) verifiziert werden und diese können danach gegebenenfalls wieder installiert werden:

# ldd /usr/local/bin/mutt
/usr/local/bin/mutt:
        libncursesw.so.5.6 => /usr/local/lib/libncursesw.so.5.6 (0x2810b000)
        libgssapi.so.8 => /usr/lib/libgssapi.so.8 (0x28130000)
        libkrb5.so.8 => not found (0x0)
        libasn1.so.8 => not found (0x0)
        libcrypto.so.4 => /lib/libcrypto.so.4 (0x28147000)
        libroken.so.8 => not found (0x0)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x2823f000)
        libcom_err.so.3 => /usr/lib/libcom_err.so.3 (0x28258000)
        libssl.so.4 => /usr/lib/libssl.so.4 (0x2825a000)
        libz.so.3 => /lib/libz.so.3 (0x28289000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x2829a000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x282a3000)
        libc.so.6 => /lib/libc.so.6 (0x28398000)
        libtinfow.so.5.6 => /usr/local/lib/libtinfow.so.5.6 (0x2847a000)

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

Comments (1)  Permalink

Inhalt eines ISO-Images auslesen

Mit Hilfe von isoinfo lässt sich der Inhalt eines ISO-Images anzeigen. Im FreeBSD Portbaum findet man isoinfo im Port sysutils/cdrtools:

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

Benutzt man isoinfo mit der -f Option, so werden alle Dateien des ISO-Images angezeigt, als wenn ein find . -print im Image durchgeführt werden würde. Mit der -i Option wird das ISO-Image angegeben, welches ausgelesen werden soll:

# isoinfo -f -i 2.2.8-RELEASE.iso
/ABOUT.TXT
/BIN
/CATPAGES
/CDROM.INF
/COMPAT1X
/COMPAT20
/COMPAT21
/DES
/DICT
/DOC
[...]

Mit der -l Option wird der Inhalt des Images angezeigt, als wenn ein ls -lR im Image ausgeführt werden würde:

#  isoinfo -l -i 2.2.8-RELEASE.iso | head

Directory listing of /
d---------   0    0    0            4096 Mar 31 2006 [     24 02]  . 
d---------   0    0    0            4096 Mar 31 2006 [     24 02]  .. 
----------   0    0    0            8723 Mar 31 2006 [    804 00]  ABOUT.TXT 
d---------   0    0    0           10240 Mar 31 2006 [     28 02]  BIN 
d---------   0    0    0            4096 Mar 31 2006 [     35 02]  CATPAGES 
----------   0    0    0              27 Mar 31 2006 [    809 00]  CDROM.INF 
d---------   0    0    0            2048 Mar 31 2006 [     43 02]  COMPAT1X 
d---------   0    0    0            2048 Mar 31 2006 [     44 02]  COMPAT20
[...]

Durch die -x Option lässt sich eine Datei des Images auf der Standardausgabe ausgeben:

# isoinfo -x /README.TXT -i 2.2.8-RELEASE.iso
   -----------------------------------------
      FreeBSD 2.2.8  ---  RELEASE Version              ,        ,
   -----------------------------------------          /(        )`
                                                      \ \___   / |
Welcome to the 2.2.8-RELEASE version of FreeBSD!      /- _  `-/  '
                                                     (/\/ \ \   /\
This is a full release to follow 2.2.7-RELEASE,      / /   | `    \
which was released in July, 1998.  Many bugs         O O   ) /    |
[...]

Mehr Informationen und weitere Optionen von isoinfo findet man in der Manpage isoinfo(8).

Comments (3)  Permalink

Netzwerkstatistiken anzeigen

Mit Hilfe der -s Option von netstat können Statistiken zu verschiedenen Netzwerkprotokollen angezeigt werden. Wird die -s Option zweimal verwendet, so werden alle Zähler die auf 0 stehen nicht angezeigt:

# netstat -s -s
tcp:
        20131319 packets sent
                7987509 data packets (3819885096 bytes)
                25265 data packets (20575251 bytes) retransmitted
                1608 data packets unnecessarily retransmitted
                6985545 ack-only packets (551074 delayed)
                25 window probe packets
                4018034 window update packets
                1115356 control packets
        22627937 packets received
                6801128 acks (for 3754613339 bytes)
                511098 duplicate acks
                16166251 packets (1581592327 bytes) received in-sequence
                9474 completely duplicate packets (1610688 bytes)
                112 old duplicate packets
                79 packets with some dup. data (7143 bytes duped)
                249755 out-of-order packets (313240610 bytes)
                462004 window update packets
                29378 packets received after close
                30 discarded for bad checksums
                10468 discarded due to memory problems
        275397 connection requests
        624094 connection accepts
        20132 ignored RSTs in the windows
[...]

Wird die -s Option zusammen mit der -r Option verwendet, so werden verschiedene Zähler zum Routing angezeigt. Auch hier kann die -s Option zweimal verwendet werden, um alle Zähler die auf 0 stehen nicht anzuzeigen:

# netstat -r -s 
routing:
        213 bad routing redirects
        0 dynamically created routes
        0 new gateways due to redirects
        13 destinations found unreachable
        0 uses of a wildcard route
        0 routes not in table but not freed

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

 Permalink

Zugriff auf Systemmeldungen verbieten

Mit Hilfe von dmesg(8) können standardmässig alle Benutzer die Systemmeldungen abrufen:

# dmesg
Copyright (c) 1992-2008 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.1-PRERELEASE #0: Fri Sep  5 22:34:11 CEST 2008
[...]

Durch die sysctl-Variable security.bsd.unprivileged_read_msgbuf kann unprivilegierten Benutzern der Zugriff auf die Systemmeldungen verboten werden:

# sysctl security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_read_msgbuf: 1 -> 0

Unprivilegierte Benutzer erhalten fortan eine Fehlermeldung beim Aufruf von dmesg:

# dmesg
dmesg: sysctl kern.msgbuf: Operation not permitted

Soll die Option dauerhaft gesetzt werden, kann folgender Eintrag in der /etc/sysctl.conf eingefügt werden:

security.bsd.unprivileged_read_msgbuf=0

 Permalink

Temporäre Dateien automatisch löschen

Mit Hilfe von tmpreaper lassen sich automatisch Dateien in temporären Verzeichnissen löschen, auf welche eine festgelegte Zeit lang nicht mehr zugegriffen worden ist. Im FreeBSD Portbaum findet man tmpreaper unter sysutlis/tmpreaper:

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

Es kann angegeben werden, in welchem Verzeichnis nach Dateien gesucht werden soll, auf die eine bestimmte Zeit nicht mehr zugegriffen worden ist. Die festgelegte Zeit wird dabei mit der Zugriffszeit (atime) der Datei verglichen. Mit der --showdeleted Option wird angezeigt, welche Dateien gelöscht werden. Die --test Option zusammen mit der --showdeletet Option zeigen an, welche Dateien gelöscht werden würden, löschen diese aber nicht. Im folgenden Beispiel wird nach Dateien in /tmp gesucht, auf welche seit mehr als 12 Stunden nicht mehr zugegriffen worden ist:

# tmpreaper --test --showdeleted 12h /tmp
(PID 5913) Pretending to clean up directory `/tmp'.
(PID 5914) Pretending to clean up directory `.X11-unix'.
Not a regular file or directory `X0' -- skipping.
(PID 5914) Back from recursing down `.X11-unix'.
(PID 5914) Pretending to clean up directory `.XIM-unix'.
(PID 5914) Back from recursing down `.XIM-unix'.
(PID 5914) Pretending to clean up directory `.ICE-unix'.
(PID 5914) Back from recursing down `.ICE-unix'.
(PID 5914) Pretending to clean up directory `.font-unix'.
(PID 5914) Back from recursing down `.font-unix'.
Pretending to remove file `/tmp/.X0-lock'.
rm /tmp/.X0-lock
Pretending to remove file `/tmp/test'.
rm /tmp/test

Mit der --protect Option können Dateien angegeben werden, welche nicht gelöscht werden sollen:

# tmpreaper --test --showdeleted --protect '/tmp/.*-lock' 12h /tmp
(PID 5993) Pretending to clean up directory `/tmp'.
(PID 5994) Pretending to clean up directory `.X11-unix'.
Not a regular file or directory `X0' -- skipping.
(PID 5994) Back from recursing down `.X11-unix'.
(PID 5994) Pretending to clean up directory `.XIM-unix'.
(PID 5994) Back from recursing down `.XIM-unix'.
(PID 5994) Pretending to clean up directory `.ICE-unix'.
(PID 5994) Back from recursing down `.ICE-unix'.
(PID 5994) Pretending to clean up directory `.font-unix'.
(PID 5994) Back from recursing down `.font-unix'.
Entry matching `--protect' pattern skipped. `/tmp/.X0-lock'
Pretending to remove file `/tmp/test'.
rm /tmp/test

Ohne die --test Option werden die Dateien gelöscht:

# tmpreaper --showdeleted --protect '/tmp/.*-lock' 12h /tmp
rm /tmp/test

Symlinks werden normalerweise nicht gelöscht. Sollen diese auch geprüft und ggf. entfernt werden, kann die --symlinks Option verwendet werden. Mehr Informationen findet man in der Manpage tmpreaper(8).

Comments (2)  Permalink

Prozess nach einer bestimmten Laufzeit beenden

Führt man ein Programm aus, welches unter gewissen Umständen blockiert, so kann die Ausführzeit des Programms mit Hilfe von timelimit beschränkt werden. Im FreeBSD Portbaum findet man timelimit unter sysutils/timelimit:

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

Mit der -t Option kann festgelegt werden, nach wievielen Sekunden ein Warnsignal an den ausgeführten Prozess gesendet werden soll. Standardmässig wird dabei ein SIGTERM an den Prozess geschickt. Beendet sich der Prozess nicht, wird nach einer mittels der -T Option festgelegten Zeit ein weiteres Signal (standardmässig SIGKILL) an den Prozess gesendet:

# timelimit -t 1 -T 2 sleep 3
timelimit: sending warning signal 15
# timelimit -t 1 -T 2 ./ignoreSIGTERM
timelimit: sending warning signal 15
timelimit: sending kill signal 9

Die gesendeten Signale können mit der -s und der -S Option geändert werden. In diesem Beispiel wird als Warnsignal ein SIGUSER1 und als Killsignal ein SIGUSER2 gesendet:

# timelimit -s SIGUSR1 -S SIGUSR2 -t <Warnzeit> -T <Killzeit> <Befehl> <Argumente>

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

 Permalink

CPU-Load graphisch in einem Terminal darstellen

Mit Hilfe von ttyload können die CPU-Load Werte graphisch in einem Terminal dargestellt werden. Im FreeBSD Portbaum findet man ttyload unter sysutils/ttyload:

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

Nun kann ttyload gestartet werden. Die Kurven für den 1min, 5min und 15min CPU-Load werden dabei in unterschiedlichen Farben dargestellt:

# ttyload

Sollen die Loadkurven anstatt in Farbe als Zahlen dargestellt werden, kann die -m Option verwendet werden. Nun wird die 1min Loadkurve als 1, die 5min Kurve als 2 und die 15min als 4 dargestellt. Fallen die Werte von verschiednenen Kurven aufeinander, so werden die Kurvennummern addiert:

# ttyload -m
test.chruterteee.ch          0.41, 1.00, 1.09   3:43:54       ttyload, v0.5

  2.00
  1.88
  1.75
  1.62
  1.50
  1.38   222222222222                  33333223222
  1.25   4444444444446666666666666666664444455455577666666666666644
  1.12                               11             111111111    2266666664
  1.00   111111111           11111111                        111          2
  0.88            11    11111                                   1
  0.75              1111                                         1111
  0.62                                                               11
  0.50                                                                 1111
  0.38
  0.25
  0.12
  0.00
                ^13:40         ^13:41         ^13:42         ^13:43
  Legend:
     1 min: 1, 5 min: 2, 15 min: 4
     1&5 same: 3, 1&15: 5, 5&15: 6, all: 7

Alle Optionen von ttyload können mit der -h Option angezeigt werden.

 Permalink

Zeilen einer Textdatei umkehren

Eine Textdatei kann mit Hilfe von rev zeilenweise in umgekehrter Reihenfolge angezeigt werden:

# cat test
1:2:3
a:b:c
.:!:$
# rev test
3:2:1
c:b:a
$:!:.

rev ist auf FreeBSD und OpenBSD im Basissystem vorhanden. Informationen zu rev findet man in der Manpage rev(1).

Comments (1)  Permalink
Prev Next231-240/521