Ich lese ein Beispiel für ein Bash-Shell-Skript:
#!/bin/bash
# This script makes a backup of my home directory.
cd /home
# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1
# First remove the old bzip2 file. Redirect errors because this generates some if the archive
# does not exist. Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar
# Copy the file to another host - we have ssh keys for making this work without intervention.
scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1
# Create a timestamp in a logfile.
date >> /home/franky/log/home_backup.log
echo backup succeeded >> /home/franky/log/home_backup.log
Ich versuche, die Verwendung von "/ dev / null 2> & 1" hier zu verstehen. Zuerst dachte ich, dass dieses Skript / dev / null verwendet, um Fehler ordnungsgemäß zu ignorieren, ohne das Skript zum Absturz zu bringen (ähnlich wie bei der Behandlung von Ausnahmen in Programmiersprachen). Weil ich nicht sehe, wie die Verwendung von tar zum Komprimieren eines Verzeichnisses in eine tar-Datei möglicherweise Fehler verursachen kann.
tar
es in der Quelle nicht vorhanden ist, weil tar
abgestürzt (man weiß es nie), weil auf dem Gerät kein Platz mehr vorhanden ist, weil die tar
Version geändert wurde und jetzt eine andere Syntax erforderlich ist, weil der Datenträger einen E / A-Fehler verursacht hat. Ich bin sicher, Sie könnten mehr finden.
/dev/null
verhindert nicht das Abstürzen, bereinigt jedoch die stdout- und stderr-Ausgabestreams.tar
kann auf verschiedene Weise Fehler verursachen. Sie haben möglicherweise keinen Schreibzugriff, die Datei ist möglicherweise bereits vorhanden usw.