Hilfreiche Shellbefehle
Prozesse
Alle httpd und Apache Prozesse stracen
ps auxw | awk '/(apache|httpd)/{print "strace -F -p " $2}' | sh # Anzeige auf sdt out ps auxw | awk '/(apache|httpd)/{print "strace -o blubb.out -F -p " $2}' | sh # schreibt in Datei blubb.out
Suchen, finden und ersetzen/löschen
Inhalte in Dateien suchen und Dateinamen mit Pfad anzeigen lassen. Sucht ab /home/foo nach dem Inhalt bar in jeder *.txt Datei
find /home/foo -type f -name *.txt | xargs grep bar # Lösung mit find grep -rnwi '/home/foo' -e 'bar' # Lösung mit grep (schneller), sucht in jeder Datei
Datei- und Ordnergröße ermitteln
du -cksh * |sort -g # ermittelt Ordnergröße du -k -x / | sort -k 1n # Gibt Ordner von Klein nach Groß aus du -k -x / | sort -k 1n | tail -20 # Zeigt die 20 größten Ordner
Inhalte in allen Dateien suchen und ersetzen
!!!Im Ordner und allen Unterordnern nach \\creutz.spdns.de
suchen und durch \\creutz.noip.me
ersetzen
find . -type f -exec perl -pi -e '~s/(?<![\w_\-@#.])creutz.spdns.de/creutz.noip.me/g' {} \;
Inhalte in allen Dateien suchen und löschen !!!Im Ordner und allen Unterordnern nach *.jpg suchen und löschen
find $DIR -name '*.345' -delete
Netzwerk Debugging
Zeige netstat Ausgabe alle zwei Sekunden
watch -n 2 netstat -antuPort unter Windows Powershell testen:
Test-NetConnection -ComputerName "192.168.1.10" -Port 80 -Timeout 1000
Berechtigungen
Berechtigung NUR an Ordnern ändern
find . -type d -exec chmod 755 {} \;
Dasselbe funktioniert natürlich auch mit Dateien
find . -type f -exec chmod 644 {} \;
Suche nach Eigentümer und Berechtigung
find /home/foo/ -user bar # findet alles unter /home/foo/ was dem User bar gehört find /home/foo/ -group bar # findet alles unter /home/foo/ was der Gruppe bar gehört find /home/foo/ -perm 644 # findet alles unter /home/foo/ mit der Berechtigung 644 find /home/foo/ -perm -644 # findet alles unter /home/foo/ mit mindestens der Berechtigung 644 oder höher
Dateien umbenennen
rename 's/small/winzig/' *.jpg # sucht alle .jpg Dateien und tauscht small gegen winzig. rename 's/\[KOPIE\]/aaa/' *.jpg # tauscht alle Sonderasurücke [KOPIE] zu aaa. rename 'y/A-Z/a-z/' * # alle Zeichen sind danach klein rename 's/ü/ue/' * # tauscht Ü zu ue
Bildbearbeitung
Welches Format haben die Fotos
$ identify *.jpg
Bilder von jpg zu png konvertieren
convert bild1.jpg bild2.png # ein Bild for i in *.jpg; do convert $i `basename $i .jpg`.png; done # alle Bilder
Bilder drehen
convert -rotate 90 bild2.jpg bild2.jpg # ein Bild for i in *.jpg; do convert -rotate 90 $i `basename $i .jpg`.jpg; done # alle Bilder
Bilder beschriften
convert -font /usr/share/fonts/truetype/Comic_Sans_MS.ttf -pointsize 50 -fill grey -draw "text 300,500 'Hier den Text eingeben'" bild1.jpg bild1_beschr.jpg
- font: Als Argument übergeben Sie diesem Parameter die gewünschte Schriftart, z. B. -font arial oder -font helvetica. Alternativ geben Sie eine .ttf-Datei (TrueType-Schriftart) an, z. B. -font /usr/share/fonts/truetype/Comic_Sans_MS.ttf.
- pointsize: Über diesen Parameter definieren Sie die Schriftgröße in Punkt, z. B. -pointsize 40 – in der Regel ist hier ein wenig Experimentieren nötig, bis die Werte passen und das Ergebnis gut aussieht.
- fill: Hier geben Sie die Farbe der Schrift an, z. B. -fill red (für auffälliges Rot) oder -fill grey (für ein helles Grau).
- draw: Diese Option hilft beim Texten: Geben Sie als Argumente die Position in Pixeln und die Beschriftung an. Für die Positionierung rechnen Sie in Pixeln von der linken oberen Ecke ausgehend (0,0) nach rechts und unten. Alles zusammen wird in Hochkommas eingeschlossen, enthält der Text Leer- oder Sonderzeichen, wird dieser ebenfalls in Hochkommas geschachtelt, also z. B. -draw „text 300,500 'Hier den Text eingeben'“
Rahmen um das Bild
convert -mattecolor blue -frame 6x6 bild.jpg bild_rahmen.jpg # ein Bild for i in *.jpg; do convert -mattecolor blue -frame 6x6 $i `basename $i .jpg`_rahmen.jpg; done # alle BilderDies zeichnet um das Bild einen blauen Rahmen von 6 Pixel Breite und speichert es als *_rahmen.jpg. Das Bild vergrößert sich dadurch um 12 Pixel
Bilder verkleinern
- mit festen Werten (Seitenverhältnis kann sich ändern)
convert -resize 1024x768 bild1.jpg bild1_s.jpg # ein Bild for i in *.jpg; do convert -resize 1024x768 $i `basename $i .jpg`_klein.jpg; done # alle Bilder
- prozentual (Seitenverhältnis bleibt gleich)
convert -resize 20% bild.jpg bild_klein.jpg # ein Bild for i in *.jpg; do convert -resize 20% $i `basename $i .jpg`_klein.jpg; done # alle BilderAlle *.jpg Bilder werden um 20% verkleinert und als *_klein.jpg gespeichert
- oder als Script
#!/bin/sh # # # hier liegen die bilder mydir="/home/lucky/PICTURES/2005/Friends" # dahin wechseln cd $mydir if [ ! -e newpic ];then # neues verzeichnis mkdir newpic fi # verzeichnis auslesen for file in $(ls *.jpg) do # hier kommt deine convert-function: bitte in man nachlesen convert -size 480x360 $file newpic/$file done exit 0
Slideshow erstellen
convert -delay 10 *.jpg film.mngbetrachten kann man den Film mit
animate film.mng
Videos mit transcode bearbeiten
Videos entwacklen: Mit dem ersten Befehl werden die “Wackeldaten” ausgelesen, mit dem zweiten wird das Video schließlich entwackelt.
transcode -J stabilize -i original.mov -y null,null -o dummy transcode -J transform -i original.mov -y xvid -o entwackelt.avi
Netzwerk
Analysiere allen remote Traffic über ssh mit wireshark
ssh root@HOST tcpdump -iany -U -s0 -w - "not port 22" | wireshark -k -i -
Wer ist aktuell mit mir verbunden?
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s|sort|uniq -c|sort -nk1 -r ## Filtere nach B-Class netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2 -d'.'|sed 's/$/.0.0/'|sort|uniq -c|sort -nk1 -r ## Filtere nach C-Class netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2,3 -d'.'|sed 's/$/.0/'|sort|uniq -c|sort -nk1 -r