Als Webentwickler muss man nicht unbedingt ein Linuxguru sein. Da man aber doch das eine oder andere Mal per Shell auf einem Server zu werkeln hat, habe ich die von mir am meisten benutzten Linux-Befehle zusammengestellt.
Packe ein Verzeichnis inklusive aller Unterverzeichnisse
tar cfz file.tar.gz /www/host.tld
Möchte man die Verzeichnisse cache und logs nicht mit packen, so kann man den Befehl um diese Angabe erweitern.
tar cfz file.tar.gz –exclude logs –exclude cache /www/host.tld
Lösche alle Dateien aus Liste
cat files.txt | xargs rm -f
Alle Dateien, die in files.txt stehen, werden einzeln an den Löschbefehl rm übergeben. Die zusätzliche option -f unterdrückt die Nachfrage ob die Datei wirklich gelöscht werden soll.
Lösche alle *.bak Dateien
find -type f -name “*.bak” | xargs rm -f
find sucht im aktuellen Verzeichnis alle Dateien mit der Dateiendung .bak und schickt sie mittelt einer Pipe und xargs an den Löschbefehl rm.
Lösche alle *.bak Dateien die älter als 14 Tage sind
find ./*.bak -mtime +14 | xargs rm -f
find sucht im aktuellen Verzeichnis alle Dateien mit der Dateiendung .bak, die vor 14 Tagen zum letzen mal geändert wurden und schickt sie an den Löschbefehl rm.
Lösche alle Dateien, die eine Größe von 0 Bytes haben
find . -type f -size 0 | xargs rm -f
find sucht im aktuellen Verzeichnis alle Dateien die 0 Bytes groß sind und schickt sie an den Löschbefehl rm.
Lösche alle Dateien, die eine Größe von weniger als 500 Bytes haben
find . -type f -size -500c | xargs rm -f
Ist der Zahl nach dem Parameter -size ein - vorangestellt, bedeutet das kleiner, ein + bedeutet größer als und kein Vorzeichen genau gleich. Das c hinter der Zahl gibt an, dass es sich um Bytes handelt. Ein b würde für Block stehen, ein k für Kilobytes etc.
Finde alle Dateien, die “STRING” enthalten und schreibe ihre Namen in eine logdatei
find . -type f | xargs grep -l “STRING” > files.txt
Der Parameter -l beim Kommando grep bewirkt, dass nur die Dateinamen der Dateien ausgegeben werden, in denen “STRING” gefunden wurde.
Erstelle ein Verzeichnis und alle übergeordneten Verzeichnisse wenn diese nicht vorhanden sind
mkdir -p /www/domain.tld/httpd/logs
Logdateien beobachten
tail -f /path/logfile.log
Das Kommando tail mit dem zusätzlichen Paramater -f bewirkt, dass sämtliche Änderungen, die in dem zu beobachtenden Logifle stattfinden sofort auf dem Bildschirm angeziet werden.
Programme im Hintergrund arbeiten lassen
Mit screen einen Screen starten, nun das gewünschte Kommand absetzen. Mit der Tastenkombination Strg +a+d verlässt man (detached) den Screen. Mit screen -r öffnet man den Screen wieder. Laufen mehrere Screens, so liefert screen -r eine Liste der laufenden Sessions und mit screen -r ID kann man einen bestimmen Screen wieder aufrufen.
Kommandos mit geänderter Priorität starten
Da Kommandos wie find und grep einen sehr hohen Serverload erzeugen können, macht es oft Sinn, einen Befehl mit einer niedrigeren Priorität starten, indem man dem eigentlichen Kommando nice -10 voranstellt.
Laufenden Kommandos eine neue Priorität zuweisen
Ermittle mit ps au die gewünschte Prozess-ID und setze mit renice -10 PID eine neue Priorität.
Aus Datei Zeile 10 und 17 ausgeben
sed -ne ’10,17p’ datei
Aus Datei Zeilen ausgeben, die mit dem String “10″ beginnen
sed -ne ‘/^10/p’ datei
Uhrzeit und Datum einstellen und mit der Hardwareuhr syncen
date -s “Oct 13, 2009 14:04:05″
hwclock –systohc
Auf der Shell einen pseudo zufälligen 128 bit Token generieren
echo ${RANDOM} | md5sum | gawk ‘{print $1}’
Für alle die weiterlesen wollen hier die Referenzseiten zu den einzelnen Linux-Befehlen:
Wenn du weitere nützliche Linux-Kommandos kennst, schreib einen Kommentar und ich ergänze die Liste.