Manchmal müssen Systemadministratoren und Entwickler viele, komplexe und langwierige Befehle verwenden, um eine kritische Aufgabe auszuführen. Die meisten Benutzer kopieren diese Befehle und die von diesen jeweiligen Befehlen generierte Ausgabe in eine Textdatei zur Überprüfung oder zukünftigen Bezugnahme. Natürlich hilft Ihnen die „Verlaufs“-Funktion der Shell, die Liste der in der Vergangenheit verwendeten Befehle zu erhalten, aber sie hilft nicht dabei, die für diese Befehle generierte Ausgabe zu erhalten.
Glücklicherweise gibt es ein einfaches und zeitsparendes Dienstprogramm, das als Skript bekannt ist und diese Aufgabe für Sie erledigt. Der Skriptbefehl verrichtet seine Arbeit leise, indem er im Hintergrund läuft. Dieses Dienstprogramm ist ein Muss, wenn für die von Ihnen verwalteten Server nur die Befehlszeilenschnittstelle verfügbar ist. Dieser Artikel untersucht seine Verwendung anhand von Beispielen.
Starten der Aufzeichnung von Aktivitäten einer Terminalsitzung
Geben Sie einfach „script“ in die Befehlszeile ein:
$ script
Eine Startmeldung „Skript gestartet, Datei ist Typoskript“ wird wie folgt angezeigt:
$ script Script started, file is typescript $
Jetzt beginnt der Skriptbefehl mit der Aufzeichnung der Benutzerbefehle im Hintergrund, bis ein Benutzer „Beenden“ eingibt oder Strg-D drückt, um die Aufzeichnung zu stoppen.
$ exit
Alles zwischen dem "script" und dem "exit" Befehl wird standardmäßig in einer Datei im aktuellen Verzeichnis protokolliert. Lassen Sie uns ein paar Befehle ausführen und sehen, wie das Skript die Befehle und die entsprechende Ausgabe wie folgt speichert:
Im obigen Screenshot wird der Skriptbefehl mit den Befehlen „free –h“ und „vmstat“ ausgeführt. Sobald der Benutzer die Aufzeichnung beendet, indem er „exit“ oder Strg+D eingibt, werden alle ausgeführten Befehle und ihre jeweilige Ausgabe in der Datei „typescript“ im aktuellen Arbeitsverzeichnis aufgezeichnet. So einfach und doch erstaunlich!
Aufzeichnen von Aktivitäten in einer Datei
Es ist eine gute Praxis, Skriptaufzeichnungssitzungen in einer benutzerdefinierten Datei mit einem Zeitstempel zu speichern, damit es zu einem späteren Zeitpunkt nützlich ist, darauf zuzugreifen. Dazu muss der Skriptbefehl ausgeführt werden, indem der gewünschte Dateiname als Argument angegeben wird:$ script
Der folgende Screenshot zeigt, wie die Aufzeichnung in der vom Benutzer bereitgestellten Protokolldatei gespeichert wird:
Aufzeichnungsaktivitäten an eine bestehende Datei anhängen
Es kann erforderlich sein, den Aufzeichnungsverlauf in eine vorhandene Protokolldatei einzufügen. Dazu muss der Skriptbefehl ausgeführt werden, indem der Dateiname mit der Option „-a“ versehen wird, die den Anhängevorgang anzeigt.
$ script –a <existing_file_name>
Weitere Optionen finden Sie auf der Skript-Manpage.
Schlussfolgerung
Es wird nicht empfohlen, den Skriptbefehl in nicht interaktiven Shells auszuführen. Der Skriptbefehl speichert alles (Steuerzeichen wie Zeilenvorschübe) in der Protokolldatei. Wenn die Umgebungsvariable SHELL gesetzt ist, wird die Shell vom Skript gegabelt. Wenn nicht gesetzt, wird die Bourne-Shell als Standard angenommen. Wenn dem Skript kein Name der Protokolldatei bereitgestellt wird, wird eine Standarddatei, Typoskript, verwendet. Der Skriptbefehl beschwert sich, wenn die bereitgestellte Protokolldatei nicht erstellt werden kann. Wenn die angegebene Protokolldatei bereits existiert und die Option „–a“ nicht verwendet wird, wird die alte Datei überschrieben.