LINUX

Das universelle Betriebssystem

Übungen

Deutsche Angestellten Akademie

Übungen:
  • Finden Sie alle Dateien in Ihrem System, die größer als 1 MiB sind, und lassen Sie deren Namen ausgeben.
  • Wie können Sie find benutzen, um eine Datei zu löschen, die einen merkwürdigen Namen hat (etwa mit unsichtbaren Kontrollzeichen oder mit Umlauten, die von älteren Shells nicht verstanden werden)?
  • Wie würden Sie beim Abmelden dafür sorgen, dass etwaige Dateien in /tmp, die Ihnen gehören, automatisch gelöscht werden?
  • README ist ein sehr populärer Dateiname. Geben Sie die absoluten Pfadnamen aller Dateien auf Ihrem System an, die README heißen.
  • Legen Sie eine neue Datei in Ihrem Heimatverzeichnis an und überzeugen Sie sich durch einen locate-Aufruf, dass diese Datei nicht gefunden wird (wählen Sie gegebenenfalls einen hinreichend ausgefallenen Dateinamen). Rufen Sie dann (mit Administratorrechten) das Programm updatedb auf. Wird Ihre neue Datei danach mit locate gefunden? Löschen Sie die Datei wieder und wiederholen Sie die vorigen Schritte
  • Überzeugen Sie sich, dass slocate funktioniert, indem Sie als gewöhnlicher Benutzer nach Dateien wie /etc/shadow suchen.
  • Welche Dateien stehen im Verzeichnis /boot? Hat das Verzeichnis Unterverzeichnisse und, wenn ja, welche?
  • Erklären Sie den Unterschied zwischen ls mit einem Dateinamen als Argument und ls mit einem Verzeichnisnamen als Argument.
  • Wie können Sie ls dazu bringen, bei einem Verzeichnisnamen als Argument Informationen über das benannte Verzeichnis selbst anstatt über die darin enthaltenen Dateien zu liefern?
  • Warum hat mv keine -R-Option wie cp?
  • Angenommen, in einem Ihrer Verzeichnisse steht eine Datei namens »- file« (mit einem Minuszeichen am Anfang des Namens). Wie würden Sie diese Datei entfernen?
  • Wenn Sie ein Verzeichnis haben, in dem Sie nicht versehentlich einem »rm *« zum Opfer fallen wollen, können Sie dort eine Datei namens »- i« anlegen, etwa mit
    $ > -i
    Was passiert, wenn Sie jetzt das Kommando »rm *« ausführen, und warum?
  • Wie löscht man diese Datei ( -i ) ?

Experimente mit versch. Kompressionsprogrammen ( gzip, bzip2, xz ):

  • Besorgen Sie sich eine geeignete Datei (etwa ein größeres tar -Archiv zB den Linux Kernel) und komprimieren Sie sie jeweils mit gzip , bzip2 und xz . Messen Sie dabei die Ausführungszeit durch ein vorgesetztes time . Wie verhalten die Laufzeiten und die Komprimierungsraten sich zueinander?
  • Experimentieren Sie mit der Datei aus der vorigen Aufgabe und vergleichen Sie die Laufzeit und die Größe des Resultats für xz mit verschiedenen Effizienz-Optionen. Was ist der Unterschied zwischen -1 und -6 und zwischen -6 und -9 ?

Übungen mit grep / reguläre Ausdrücke

  • Sind die Operatoren ? und + in regulären Ausdrücken wirklich nötig?
  • Finden Sie in frosch.txt alle Zeilen, in denen das Wort »Tochter« oder »Königstochter« vorkommt.
  • In der Datei /etc/passwd stehen die Benutzer des Rechners (meistens jedenfalls). Jede Zeile der Datei besteht aus einer Reihe von durch Doppelpunkten getrennten Feldern. Das letzte Feld jeder Zeile gibt die Login-Shell eines Benutzers an. Geben Sie eine grep-Kommandozeile an, mit der Sie alle Benutzer finden können, die die Bash als Login-Shell verwenden.
  • Suchen Sie in /usr/share/dict/words nach allen Wörtern, die die genau die fünf Vokale »a«, »e«, »i«, »o« und »u« in dieser Reihenfolge enthalten (möglicherweise mit Konsonanten davor, dazwischen und dahinter).
  • Geben Sie ein Kommando an, das im »Froschkönig« alle Zeilen sucht und ausgibt, in denen irgendein mindestens vierbuchstabiges Wort zweimal auftritt.

Quelle: lxes-de-manual.pdf

  • Wie können Sie prüfen, ob in einem Verzeichnis Dateien mit »merkwürdigen« Namen enthalten sind, etwa solche mit Leerzeichen am Schluss oder mit unsichtbaren Steuerzeichen in der Mitte?
  • Vergleichen Sie die Ausgabe der Kommandos »ls /tmp« und »ls /tmp >ls-tmp.txt« (wobei wir mit »Ausgabe« im zweiten Fall den Inhalt der Datei ls- tmp.txt meinen). Fällt Ihnen etwas auf? Falls ja, wie könnte man das Phänomen erklären? ( u.U. kein Effekt, hängt von der Version ab )
  • Ersetzten Sie in den Dateinamen der jpg aus bilder.zip alle Gross- durch Kleinbuchstaben
    ~$ tr '[:upper:]' '[:lower:]' ...
  • Sortieren Sie die Teilnehmerliste in teilnehmer0.dat nach den Vereinsnamen und innerhalb der Vereine nach den Nach- und Vornamen der Spieler (in dieser Reihenfolge)

    ~$ man sort

  • Generieren Sie eine neue Version der Datei teilnehmer0.dat, in der die Startnummer und die Vereinszugehörigkeit nicht auftauchen.

    ~$ man cut
    ~$ man paste

  • Erzeugen Sie eine Version der Datei teilnehmer0.dat, bei der die Felder nicht durch Doppelpunkte, sondern durch die Zeichenkette »,␣« (Komma gefolgt von einem Leerzeichen) getrennt sind.
  • Wie viele verschiedene Gruppen werden von Benutzern auf Ihrem System als primäre Gruppen benutzt? (Die primäre Gruppe eines Benutzers ist das vierte Feld in der Datei /etc/passwd.)

Erstellt ein Backup-Installations-Script welches

  1. einmal per Dialog einen Backup-Dateinamen ohne Endung abfrägt mit Whiptail
  2. einmal per Dialog das Backup-Ziel abfrägt ( zB lk.schubertdaniel.de / oder localhost )
  3. einen systemd Timer ( https://wiki.archlinux.de/title/Systemd/Timers ) installiert, der täglich
    • die Ordner „wp-content/themes“ und „wp-content/uploads“ eurer Wordpress Installation
    • Die Datenbank eurer Wordpress Installation ( Befehl mysqldump )
      mysqldump --add-drop-table -h mysql_hostserver -u mysql_username -p mysql_databasename
      
    zusammen in ein xz-komprimiertes File mit dem oben abgefragten Namen + Datum im Format
    „24-02-2019“ packt
  4. das Backup auf Backup-Ziel per „scp“ oder „rsync“ kopiert.
  5. Strukturiert das Script mit functions; ggf. kann es sinnvoll sein, die Aufgabe in mehrere Dateien aufzuteilen.

zusätzliche Überlegungen:

  • gibt es bereits einen service der so heisst?
  • existiert die datenbank?
  • existieren die ordner?
  • existiert das backupziel?
  • was soll passieren wenn etwas nicht existiert?
  • was soll passieren wenn der upload scheitert?