30.04.2011
Jemand der nie einen Fehler gemacht hat, hat nie etwas neues ausprobiert. – Albert Einstein.
Hier sind ein paar der gravierensten Fehler die ich am Unix Promt gemacht habe. Einige der Fehler kosten mich eine längere Downtime des Server. Viele der Fehler sind aus frühen Linux Zeiten.
No. 01: Befehl - userdel
Die Datei /etc/deluser.conf war zum löschen des home Verzeichnisses und des Mail Spool des Users konfiguriert. Eigentlich wollte ich nur den User Account löschen und am Ende löschte ich alles (Info: -r war via deluser.conf aktiviert):
userdel foo
No. 02: Solaris Box Rebooted
Unter Linux beendet der Befehl killall Prozesse. (killall httpd). Unter Solaris jedoch killt der Befehl jeden aktiven Prozess. Als Root User beendete ich jeden Prozess - und dies war unsere Haupt Oracle DB Box:
killall process-name
No. 03: Zerstörte named.conf
Ich wollte eigentlich nur eine neue Zone zur /var/named/chroot/etc/named.conf Datei hinzufügen, aber es endete anderst:
./mkzone example.com > /var/named/chroot/etc/named.conf
No. 04: Zerstörten von Arbeits Backups mit Tar und Rsync (Private Backups)
Ich hatte nur eine Backup Kopie meines OT Projektes gemacht und wollte eigentlich nur ein Verzeichnis finden, das functions hies. Es endete damit das ich sämtliche Sicherungen gelöscht habe… (Info: -c switch anstatt von -x):
cd /mnt/bacupusbharddisk tar -zcvf project.tar.gz functions
Ich hatte kein Backup…. Ähnlich lief es als ich einmal den rsync Befehl ausgeführt habe, und alle neuen Dateien durch Überschreiben aus Backup-Sets gelöscht wurden (heutzutage verwende ich _rsnapsho_t)
rsync -av -delete /dest /src
Und wieder einmal hatte ich kein Backup
No. 05: Löschen des Apache Document-Root Verzeichnis
Ich hatte Sym-Links für mein WebServer Root Verzeichnis “docroot” (/home/httpd/http was symlinked to /www). Habe wohl das Symlink Problem vergessen.Um Speicherplatz zu sparen lies ich
rm -rf
im http Verzeichnis laufen. Glücklicherweis hatte ich diesmal ein Backup
No. 06: Dumme Änderung des Hostnamen & getriggerter falscher Alarm
Fälschlicher Weise änderte ich den hostnamen (Ich wollte eigentlich nur den aktuellen hostname auslesen) für einen unserer Cluster Knoten. Innerhalb von Minuten erhielt ich eine Alarm Nachrift per email & sms.
hostname foo.example.com
No. 07: Internet Interface beendet…
Ich wollte eigentlich das VPN Interface eth0 herunterfahren, aber es endete damit dass ich eth1 beendete, wärend ich mit SSH eingeloggt war:
ifconfig eth1 down
No. 08: Von der Firewall Ausgesperrt
Ich machte Änderungen an der sshd_config Datei und änderte den ssh port von 22 auf 1022, und habe dabei wohl vergessen die Firewall Regeln zu updaten. Nach einem kurzen Kernel update rebootete ich. Tja dann musste ich wohl beim Provider anrufen und die Firewall Einstellungen vor Ort resetten lassen. (Nun verwende ich ein firewall Reset Skript um ein “Aussperren” zu vermeiden)
No. 09: Eintippen eines Linux Befehls in eine falsche Konsolen Box
Eigentlich wollte ich mein Lokales Debian Desktop System herunterfahren, allerdings gab ich “halt” im falschen Konsolenfenster ein und beendete den Remote Server (Ich war per ssh in der Remote Box eingeloggt…):
halt service httpd stop
No. 10: Falscher CNAME DNS Entry
Ich erstellte einen Falschen DNS CNAME Eintrag in der example.com Zonen Datei. Das Ergebnis daraus: Ein Paar Besucher wanderten nach /dev/null:
echo 'foo 86400 IN CNAME lb0.example.com' >> example.com && rndc reload
Schlusswort:
Jeder macht mal Fehler, aber nur die weisen lernen aus Ihren Fehlern – Winston Churchill.
Von allen diesen Fehlern habe ich gelernt:
- Backup = ( Full + Removable tapes (or media) + Offline + Offsite + Tested )
- Die klare erste Wahl zur Sicherung aller Daten eines Linux-Dateisysteme ist Dump, das einzige Tool, das garantiert unter allen Bedingungen wiederherstellt.
- Verwenden Sie niemals rsync mit einzelnen Backup-Verzeichnis. Erstellen Sie einen Snapshot mit rsync oder rsnapshots.
- Benutze CSV um Konfigurationsdateinen aufzubewahren.
- Lesen und warten bevor man die [Enter] Taste erneut drückt.
- Verwenden Sie Ihre gut getestet Perl / Shell-Skripten und Open-Source-Konfigurations-Management-Software wie puppet, Cfengine oder Chef um alle Server zu konfigurieren. Dies gilt auch für alltägliche arbeiten, wie das Erstellen der Benutzer und so weiter.
Meine Top-10 Fehler mit Linux Befehlen
Jemand der nie einen Fehler gemacht hat, hat nie etwas neues ausprobiert. – Albert Einstein.
Hier sind ein paar der gravierensten Fehler die ich am Unix Promt gemacht habe. Einige der Fehler kosten mich eine längere Downtime des Server. Viele der Fehler sind aus frühen Linux Zeiten.
No. 01: Befehl - userdel
Die Datei /etc/deluser.conf war zum löschen des home Verzeichnisses und des Mail Spool des Users konfiguriert. Eigentlich wollte ich nur den User Account löschen und am Ende löschte ich alles (Info: -r war via deluser.conf aktiviert):
userdel foo
No. 02: Solaris Box Rebooted
Unter Linux beendet der Befehl killall Prozesse. (killall httpd). Unter Solaris jedoch killt der Befehl jeden aktiven Prozess. Als Root User beendete ich jeden Prozess - und dies war unsere Haupt Oracle DB Box:
killall process-name
No. 03: Zerstörte named.conf
Ich wollte eigentlich nur eine neue Zone zur /var/named/chroot/etc/named.conf Datei hinzufügen, aber es endete anderst:
./mkzone example.com > /var/named/chroot/etc/named.conf
No. 04: Zerstörten von Arbeits Backups mit Tar und Rsync (Private Backups)
Ich hatte nur eine Backup Kopie meines OT Projektes gemacht und wollte eigentlich nur ein Verzeichnis finden, das functions hies. Es endete damit das ich sämtliche Sicherungen gelöscht habe… (Info: -c switch anstatt von -x):
cd /mnt/bacupusbharddisk tar -zcvf project.tar.gz functions
Ich hatte kein Backup…. Ähnlich lief es als ich einmal den rsync Befehl ausgeführt habe, und alle neuen Dateien durch Überschreiben aus Backup-Sets gelöscht wurden (heutzutage verwende ich rsnapshot)
rsync -av -delete /dest /src
Und wieder einmal hatte ich kein Backup
No. 05: Löschen des Apache Document-Root Verzeichnis
Ich hatte Sym-Links für mein WebServer Root Verzeichnis “docroot” (/home/httpd/http was symlinked to /www). Habe wohl das Symlink Problem vergessen.Um Speicherplatz zu sparen lies ich
rm -rf
im http Verzeichnis laufen. Glücklicherweis hatte ich diesmal ein Backup
No. 06: Dumme Änderung des Hostnamen & getriggerter falscher Alarm
Fälschlicher Weise änderte ich den hostnamen (Ich wollte eigentlich nur den aktuellen hostname auslesen) für einen unserer Cluster Knoten. Innerhalb von Minuten erhielt ich eine Alarm Nachrift per email & sms.
hostname foo.example.com
No. 07: Internet Interface beendet…
Ich wollte eigentlich das VPN Interface eth0 herunterfahren, aber es endete damit dass ich eth1 beendete, wärend ich mit SSH eingeloggt war:
ifconfig eth1 down
No. 08: Von der Firewall Ausgesperrt
Ich machte Änderungen an der sshd_config Datei und änderte den ssh port von 22 auf 1022, und habe dabei wohl vergessen die Firewall Regeln zu updaten. Nach einem kurzen Kernel update rebootete ich. Tja dann musste ich wohl beim Provider anrufen und die Firewall Einstellungen vor Ort resetten lassen. (Nun verwende ich ein firewall Reset Skript um ein “Aussperren” zu vermeiden)
No. 09: Eintippen eines Linux Befehls in eine falsche Konsolen Box
Eigentlich wollte ich mein Lokales Debian Desktop System herunterfahren, allerdings gab ich “halt” im falschen Konsolenfenster ein und beendete den Remote Server (Ich war per ssh in der Remote Box eingeloggt…):
halt service httpd stop
No. 10: Falscher CNAME DNS Entry
Ich erstellte einen Falschen DNS CNAME Eintrag in der example.com Zonen Datei. Das Ergebnis daraus: Ein Paar Besucher wanderten nach /dev/null:
echo ‘foo 86400 IN CNAME lb0.example.com’ » example.com && rndc reload
Schlusswort:
Jeder macht mal Fehler, aber nur die weisen lernen aus Ihren Fehlern – Winston Churchill.
Von allen diesen Fehlern habe ich gelernt:
Backup = ( Full + Removable tapes (or media) + Offline + Offsite + Tested )
Die klare erste Wahl zur Sicherung aller Daten eines Linux-Dateisysteme ist Dump, das einzige Tool, das garantiert unter allen Bedingungen wiederherstellt.
Verwenden Sie niemals rsync mit einzelnen Backup-Verzeichnis. Erstellen Sie einen Snapshot mit rsync oder rsnapshots.
Benutze CSV um Konfigurationsdateinen aufzubewahren.
Lesen und warten bevor man die [Enter] Taste erneut drückt.
Verwenden Sie Ihre gut getestet Perl / Shell-Skripten und Open-Source-Konfigurations-Management-Software wie puppet, Cfengine oder Chef um alle Server zu konfigurieren. Dies gilt auch für alltägliche arbeiten, wie das Erstellen der Benutzer und so weiter.