BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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

Mehrfach vorhandene Zeilen einer Datei entfernen

In einer sortierten Textdatei lassen sich identische Zeilen entfernen oder zählen. Verwendet man uniq ohne Optionen, so werden alle mehrfach vorhandenen Zeilen entfernt:

# cat test
AAA
aaa
aaa
aaa
bbb
ccc
ccc
# uniq test
AAA
aaa
bbb
ccc

Mit der -c Option kann die Anzahl identischer Zeilen gezählt werden:

# uniq -c test
   1 AAA
   3 aaa
   1 bbb
   2 ccc

Soll die Gross-/Kleinschreibung ignoriert werden, kann die -i Option verwendet werden:

# uniq -ci test
   4 AAA
   1 bbb
   2 ccc

Mit der -d Option werden nur mehrfach vorhandenen Zeilen angezeigt, mit der -u Option nur solche, die nur einmal vorhanden sind.

# uniq -d test
aaa
cc
# uniq -u test
AAA
bbb

Auf FreeBSD und OpenBSD ist uniq im Basissystem vorhanden, allerdings kann die -i Option nur auf FreeBSD verwendet werden. Mehr Informationen zu uniq findet man in der Manpage uniq(1).

Comments (1)  Permalink

Komprimierte Textdateien vergleichen

Mit Hilfe von zdiff lassen sich mit compress(1) oder gzip(1) komprimierte Dateien miteinander vergleichen, ohne dass die Dateien entpackt werden müssen:

# file test.gz test2.gz 
test.gz:  gzip compressed data, was "test.patch", from Unix, last modified: Thu Sep 11 10:49:40 2008
test2.gz: gzip compressed data, was "test.patch", from Unix, last modified: Thu Oct  9 20:02:57 2008
# zdiff test.gz test.gz
14c14
<               Alte Zeile
---
>               Neue Zeile 

Sowohl auf FreeBSD als auch auf OpenBSD ist zdiff im Basissystem vorhanden. Mehr Informationen zu zdiff findet man in der Manpage zdiff(1).

 Permalink

Compress-Dateien in gzip-komprimierte Dateien umwandeln

Mit Hilfe von znew können mit compress komprimierte Dateien in gzip-komprimierte Dateien umgewandelt werden:

# ls -al test.tar.Z
-rw-r--r--  1 test  wheel  72717 21 Sep 23:29 test.tar.Z
# file test.tar.Z
test.tar.Z: compress'd data 16 bits
# znew test.tar.Z
# ls -al test.tar.gz
-rw-r--r--  1 test  wheel  39884 21 Sep 23:29 test.tar.gz
# file test.tar.gz
test.tar.gz: gzip compressed data, from Unix, last modified: Tue Oct  7 17:12:14 2008

Verwendet man die -t Option von znew, wird zuerst die Integrität der neu erstellten gzip-Datei überprüft, bevor die compress-Datei gelöscht wird. Soll die Kompressionsrate von gzip erhöht werden, kann die -9 Option verwendet werden. Mit der -v Option wird die erreichte Kompressionsrate ausgegeben:

# znew -v test.tar.Z 
90.5%

Auf FreeBSD und OpenBSD ist znew bereits im Basissystem vorhanden. Mehr Informationen findet man in der Manpage znew(1).

 Permalink

/etc/group auf Syntaxfehler überprüfen

Editiert man die Gruppendatei /etc/group von Hand, so kann diese danach mit Hilfe von chkgrp auf Syntaxfehler überprüft werden:

# chkgrp
chkgrp: /etc/group: line 17: missing field(s)
chkgrp: /etc/group: line 39: GID is not numeric
chkgrp: /etc/group: line 42: ' ' invalid character
chkgrp: /etc/group: line 42: field 1 contains whitespace

Auch kann der Pfad zu einer alternativen Datei angegeben werden, welche überprüft werden soll:

# chkgrp /tmp/group.new 
/tmp/group.new is fine

Auf FreeBSD ist chkgrp schon im Basissystem vorhanden. Mehr Informationen zu chkgrp findet man in der Manpage chkgrp(8).

 Permalink

TODO-Listen über die Kommandozeile verwalten

Mit Hilfe von devtodo lassen sich auf der Kommandozeile pro Verzeichnis eine TODO-Liste führen. Im FreeBSD Portbaum findet man devtodo unter devel/devtodo:

# cd /usr/ports/devel/devtodo && make install clean

Nun kann ein neuer Eintrag der TODO-Liste hinzugefügt werden. Dabei muss ein Text und die Priorität angegeben werden:

# tda
text> task1
1. veryhigh   2. high   3. medium   4. low   5. verylow
Enter a priority from those listed above.
priority> medium
Index of new item is 1

Ist noch keine TODO-Liste im Verzeichnis vorhanden, wird automatisch eine neue angelegt:

# ls -l .todo
-rw-r--r--  1 beat  users  235 26 Sep 14:48 .todo

Vorhanden Einträge können mit todo angeschaut werden:

# todo
  1.task1

Auch kann der Text und/oder die Priorität eines neuen Eintrags direkt dem tda Befehl mitgegeben werden:

# tda "task2 und freunde"
1. veryhigh   2. high   3. medium   4. low   5. verylow
Enter a priority from those listed above.
priority> medium
Index of new item is 2
todo: warning, created database (.todo) has group or world permissions

# tda -p high "task3 und so weiter"
Index of new item is 1

Einträge mit höherer Priorität werden automatisch am Anfang der Liste einsortiert:

# todo
  1.task3 und so weiter
  2.task1
  3.task2 und freunde

Einträge können mit Hilfe des tdr Befehls aus der Liste entfernt werden:

# tdr 2
# todo
  1.task3 und so weiter
  2.task2 und freunde

Auch können Einträge der Liste auf erledigt gesetzt werden:

# tdd 1
comment> alles tiptop
# todo
  2.task2 und freunde

Mit Hilfe der all Option können erledigte Einträge weiterhin angezeigt werden. Mit Hilfe von --purge werden alle erledigten Einträge aus der Liste entfernt:

# todo all
- 1.task3 und so weiter
  2.task2 und freunde
# todo --purge
0 < 1222433003
# todo all
  1.task2 und freunde

Auch können einem Eintrag weitere Subtasks hinzugefügt werden. Diese lassen sich mit --all anzeigen:

# tda -p medium -g 1 "Subtask 1 Task 2"
Index of new item is 1.1
# todo
+ 1.task2 und freunde
# todo --all
  1.task2 und freunde
      1.Subtask 1 Task 2

Die TODO-Listen aus verschiedenen Verzeichnissen lassen sich nun mit Hilfe der -l Option miteinander verlinken und gemeinsam anzeigen:

# tda -p medium "Task 1 Hauptordner"
Index of new item is 1
# mkdir Ordner1 Ordner2
# cd Ordner1/
Ordner1# tda -p medium "Task 1 Ordner 1"
Index of new item is 1
Ordner1# tda -p medium "Task 2 Ordner 1"
Index of new item is 2
Ordner1# cd ../Ordner2/
Ordner2# tda -p medium "Task 1 Ordner 2"
Index of new item is 1
Ordner2# cd ..
# todo -l Ordner1/.todo 
1. veryhigh   2. high   3. medium   4. low   5. verylow   
priority> medium
# todo -l Ordner2/.todo
1. veryhigh   2. high   3. medium   4. low   5. verylow   
priority> medium
# todo 
+ 1.Ordner1
+ 2.Ordner2
  3.Task 1 Hauptordner
# todo all
  1.Ordner1
      1.Task 1 Ordner 1
      2.Task 2 Ordner 1
  2.Ordner2
      1.Task 1 Ordner 2
  3.Task 1 Hauptordner

Mit Hilfe der Datei ~/.todorc können Optionen und das Verhalten von devtodo festgelegt werden. Ein Beispiel einer solchen Konfigurationsdatei findet man unter /usr/local/etc/todorc.sample:

# cp /usr/local/etc/todorc.sample ~/.todorc

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

 Permalink

FreeBSD Portbaum durchsuchen

Mit Hilfe von psearch kann der FreeBSD Portbaum nach einem gesuchten Wort durchsucht werden. Standardmässig wird dabei der Portname und die "Short description" durchsucht. Im Portbaum findet man psearch unter ports-mgmt/psearch:

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

Bei der Suche mit psearch wird die Gross-/Kleinschreibung ignoriert, es kann einfach das gewünschte Wort angegeben werden nach dem der Portsbaum durchsucht werden soll:

# psearch KNOBS
ports-mgmt/lsknobs        Simple script to help configure ports knobs and options
ports-mgmt/portconf       A universal tool to set specific port knobs
ports-mgmt/portsopt       Shows WITH(OUT)-knobs of a port makefile

Verwendet man die -l Option wird zusätzlich noch die Beschreibung der gefundenen Ports angezeigt:

# psearch -l KNOBS
ports-mgmt/lsknobs        Simple script to help configure ports knobs and options
    lsknobs is a simple sh(1) script designed to help configure
    ports knobs and options by listing them together with their
    status (either enabled or not). It uses portconf for knobs.
    
ports-mgmt/portconf       A universal tool to set specific port knobs
    Portconf is a simple framework to set ports options in an
    universal way. Knobs set to specific ports are honoured
    by portmaster, portupgrade, portmanager and 'make install'.
    
    - Alex Dupre
    ale@FreeBSD.org
    
ports-mgmt/portsopt       Shows WITH(OUT)-knobs of a port makefile
    Shows WITH(OUT)-knobs of a port makefile and if you want also the knobs of
    all port dependencies.
    
    WWW: http://www.chruetertee.ch/portsopt/

Möchte man zusätzlich die ausführlichen Beschreibungen aus pkg-descr durchsuchen, so kann die -s Option verwendet werden. Mit der -c Option kann die zu durchsuchende Kategorie eingeschränkt werden:

# psearch -s -c www linkchecker
www/linkchecker           Check HTML documents for broken links
www/p5-HTTP-SimpleLinkChecker Check the HTTP response code for a link
www/p5-W3C-LinkChecker    Checks the validity of links in an HTML or XHTML document
www/p5-chklinks           A non-threaded Perl link checker

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

 Permalink
Prev Next161-170/325