Prozesse, RegEx, Textverarbeitung, vi - Hausaufgabe

  • Arbeite vimtutor bis Kapitel 5.3 durch

  • Wieviele Benutzer haben /bin/bash als Loginshell auf deinem System?:

    grep /bin/bash /etc/passwd
    
    grep /bin/bash /etc/passwd | wc -l
    
  • Bereite die Ausgabe von ls $HOME für den Druck vor. Die Auflistung soll in 3 Spalten dargestellt werden:

    ls ~ | pr -3
    
  • Lasse dir die ersten 30 Zeichen der Datei /etc/issue anzeigen:

    head -c 30 /etc/issue
    
  • Folge als Benutzer ‘root’ der Datei /var/log/messages. Rufe dann parallel in einer anderen Shell folgendes Kommando auf: logger Hallo von der Kommandozeile:

    Alt+F1
    sudo tail -f /var/log/messages
    
    Alt+F2
    logger Hallo
    
    Alt+F1
    >> Mar 06 11:29:15 hostname user: Hallo
    
  • Lasse dir eine Textdatei mit allen darin enthaltenen Steuerzeichen anzeigen:

    cat -A
    cat -vET
    
  • Wieviele Zeilen enthält deine /etc/inputrc?:

    wc -l /etc/inputrc
    
  • Sortiere die Datei /etc/passwd nummerisch nach GruppenID (Spalte 4):

    sort -t : -n -k 4,4 /etc/passwd
    
  • Filtere alle Zeilen aus der Datei /etc/inittab aus, die mit einem ‘#’ beginnen (Kommentare). Wieviele Kommentarzeilen sind in der Datei enthalten?:

    grep -v '^#' /etc/inittab
    grep '^#' /etc/inittab | wc -l
    
  • Was passiert bei folgender Kommandozeile und warum? sed -e 's/foo/FOO/g' text.txt > text.txt
    • Eigentlich sollte jedes ‘foo’ durch ‘FOO’ im Text ersetzt werden, jedoch ist die Umleitung falsch - Resultat: leere test.txt
  • Wie könnte man trotzdem die Datei direkt editieren?
    • mit text.txt > neuertext.txt oder mit sed -i

Note

Das Trennzeichen in sed kann auch anders gewählt werden:

sed -i -e 's/\/etc\/issue/\/etc\/foo/g' test.txt
sed -i -e 's|/etc/issue|/etc/foo|g' test.txt
  • Lasse dir alle Dateien in /usr/bin anzeigen, die mit einem ‘b’ beginnen, dann einen beliebigen Buchstaben enthalten, dann einmal ein ‘c’ bzw. kein ‘c’ enthalten:

    ls /usr/bin | grep ^b.c
    ls /usr/bin | grep ^b.[^c]
    
  • Starte das Kommando dd if=/dev/zero of=/dev/null mit niedrigster Priorität. Schicke es nach dem Start in den Hintergrund (CTRL+z) und lasse es danach im Hintergrund weiterlaufen. Beende das Programm, indem du das ‘Terminate’ Signal an den Prozess schickst:

    nice -n 19 dd if=/dev/zero of=/dev/null
    CTRL+z >> [1]+ Stopped nice -n 19 dd if=/dev/zero of=/dev/null
    
    bg >> [1]+ nice -n 19 dd if=/dev/zero of=/dev/null &
    
    kill -9 %nice
    
  • Starte den Editor ‘vi’. Schicke Ihn in den Hintergrund. Nun schau dir die Handbuchseite zum Befehl ‘df’ an:

    vi
    CTRL+z
    man df
    
  • Schicke nun auch die Handbuchseite in den Hintergrund. Wechsele dann wieder zum Editor zurück:

    CTRL+z
    fg 1
    
  • Warum ist das beenden eines Prozesses via kill -9 $prozess mit Vorsicht zu genießen?
    • Offene Dateien werden nicht zu Ende geschrieben..
    • Alle Unterprozesse von sterben mit (und werden Zombieprozesse)
  • Starte das Kommando dd if=/dev/zero of=/dev/null im Hintergrund. Lasse das Programm dann ‘netter’ zu den anderen sein, indem du dessen Nice-Wert auf 10 erhöhst:

    dd if=/dev/zero of=/dev/null &
    renice -n 10 2342
    
  • Darfst du den Nice-Wert eines Prozesses nach dessen Start erniedrigen?
    • Normalerweise nicht
  • Was ist die höchste Priorität, die ein Prozess haben kann, wenn er von einem unpriviligierten User ausgeführt wird?
    • je kleiner der Wert, umso weniger ‘nice’ ist der Prozess zu anderen...
      • root darf von -20 bis 19
      • user darf nur von 0 bis 19