ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

bsdutils

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png Das Paket bsdutils enthält die Basiswerkzeuge aus 4.4BSD-Lite. Enthalten sind die Programme logger, renice, script, scriptreplay und wall. Wer alle Werkzeuge aus BSD braucht, kann zusätzlich bsdmainutils installieren.

Neben der folgenden Kurzbeschreibungen liefern die Manpages weitere Informationen zu den einzelnen Programmen.

Installation

Die oben genannten Programme sind in jeder Ubuntu-Installation bereits enthalten und im Paket

  • bsdutils

integriert.

Programme

logger

Mit logger kann man Mitteilungen ins System-Log schreiben. Um logger zu testen, öffnet man sich am besten die Datei /var/log/syslog (bei älteren Ubuntu-Versionen /var/log/messages) mit tail in einem Terminalfenster [1]:

tail -f /var/log/syslog 

und sendet dann in einem anderen Terminal eine Mitteilung:

logger "Hallo System-Log :)" 

wall

wall steht für "write to all" und ermöglicht es, auf der Kommandozeile eine Mitteilung an alle auf dem System eingeloggten Nutzer zu senden, auch an sich selbst. Interessant ist dieser Befehl beispielsweise auf Multiseat-Rechnern. Um eine Mitteilung zu erstellen, startet man mit dem Befehl

wall 

und gibt danach seine Mitteilung ein. Abgesendet wird diese durch die Tastenkombination Strg + D . Möchte man den Inhalt einer Datei als Mitteilung nutzen, verwendet man eine Eingabeumleitung:

wall < DATEINAME 

Mit dem Befehl mesg kann eingestellt werden, ob Mitteilungen empfangen werden.

mesg 

gibt den aktuellen Status aus.

mesg y 

ermöglicht es, Mitteilungen zu empfangen.

mesg n 

stellt Mitteilungen von anderen Benutzern ab. Mitteilungen vom Benutzer root werden trotzdem empfangen.

renice

Der Befehl renice zur Prozesssteuerung bzw. Priorität eines Prozesses wird in einem separaten Artikel besprochen.

script

Mit dem Programm script ist es möglich, alle Ein- und Ausgaben einer Terminal-Sitzung in eine Datei zu schreiben, um zu einem späteren Zeitpunkt eine Dokumentation über durchgeführte Arbeitsschritte zur Hand zu haben. Neben Textdateien können auch Pseudo-Videos erstellt werden. Um das Loggen mittels script zu starten, genügt dessen Aufruf auf der Kommandozeile [2]:

script 

Geloggt wird in die Datei typescript. Beendet wird das Loggen mittels der Tastenkombination Strg + D bzw. der Eingabe von

exit 

Möchte man die Ausgabe an eine bereits existierende typescript-Datei anhängen, muss man script mit der Option -a aufrufen:

script -a 

Dieser Befehl erstellt ggf. eine vorher nicht vorhandene Datei typescript. Möchte man in eine andere Datei oder in ein anderes Verzeichnis loggen, muss man hinter script den Dateinamen oder den Dateipfad setzen:

script <Dateiname> 

bzw.

script /Pfad/zur/Datei 

Zum Lesen der Log-Dateien eignet sich der Pager less, bei sehr kurzen Logs kann man auch cat verwenden:

less -r <Log-Datei> 

Systemadministratoren können mittels script Terminalsitzungen anderer Benutzer aufzuzeichnen. Um dies zu testen, kann der Aufruf

exec /usr/bin/script -a -q ~/$USER

in /etc/profile eingetragen werden. Nach einer Anmeldung auf der virtuellen Konsole sollte die Sitzung ins Heimatverzeichnis des aktuellen Benutzers geloggt werden (Dateiname: aktueller Benutzername). In der Praxis sollte die Einrichtung natürlich etwas unauffälliger ausfallen. Eine Alternative zu script ist ttyrec.

scriptreplay

script kann auch verwendet werden, um ein Pseudo-Video zu erstellen. Hierfür muss der Befehl wie folgt aufgerufen werden:

script -t 2> timingfile video 

Dadurch entstehen zwei Dateien im aktuellen Verzeichnis, timingfile und video. timingfile enthält die benötigten Zeitangaben, video das aufgezeichnete Log. Zur Wiedergabe nutzt man den Befehl scriptreplay:

scriptreplay timingfile video 

Um die beiden Dateien zu einer zu packen, kann man sich mit einem Skript von Hean Kuang Ong behelfen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#//script.sh, uses script and scriptreplay to record and playback virtual terminal.
#//Copyright (C) 2007  Hean Kuan Ong ( mysurface[at]gmail.com )
#//
#//This program is free software; you can redistribute it and/or
#//modify it under the terms of the GNU General Public License
#//as published by the Free Software Foundation; either version 2
#//of the License, or (at your option) any later version.
#//
#//This program is distributed in the hope that it will be useful,
#//but WITHOUT ANY WARRANTY; without even the implied warranty of
#//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#//GNU General Public License for more details.
#//
#//You should have received a copy of the GNU General Public License
#//along with this program; if not, write to the Free Software
#//Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#!/bin/bash

SCRIPT=`which script`
SCRIPTREPLAY=`which scriptreplay`

if [ ! -n $SCRIPT ]
then
    echo "script is not installed, please install script.";
    exit
fi

if [ ! -n $SCRIPTREPLAY ]
then
    echo "scriptreplay is not installed, please install scriptreplay.";
    exit
fi

if [ "$1" == "-r" ]
then
    if [ ! -n $2 ]
    then
        read -p "what is your session name? " NAME
    else
        NAME=$2
    fi
    echo "script recording will start soon, type exit to end the recording"
    script -t 2>$NAME.timing -a $NAME.session;
    tar czf $NAME $NAME.timing $NAME.session
    rm $NAME.timing $NAME.session
    echo "run $0 -p and specified $NAME to play"
elif [ "$1" == "-p" ]
then
    if [ ! -n "$2" ]
    then
        read -p "What file you wanna play? " NAME
    else
        NAME=$2
    fi
    if [ -e $NAME ]
    then
        tar -zxf $NAME
        scriptreplay $NAME.timing $NAME.session
        rm $NAME.timing $NAME.session
        echo "that is the end of the script play."
    else
        echo "the file $NAME doesn't exist."
    fi
else
    echo `basename $0` " record and playback terminal session."
    echo "usage: "
    echo `basename $0` " -r to record"
    echo `basename $0` " -p to play"
fi

Dieses muss ausführbar gemacht werden:

chmod +x script.sh 

und kann danach über

./script.sh -r DATEINAME 

zum Aufnehmen beziehungsweise

./script.sh -p DATEINAME 

zum Abspielen genutzt werden.

ubuntuusers.local › Wikibsdutils