200 Linux [2 PT]

Posted About 2 years ago. Visible to the public.

Wir arbeiten bei makandra alle auf Linux-Betriebssystemen und bedienen im DevOps- & Cloud-Bereich primär Kunden, die ebenfalls auf Linux als Ziel-System setzen.

Entsprechend benötigen wir tiefgehendes Wissen über Linux.

In diesem Kapitel lernst Du alles zum Hintergrund und ein wenig Theorie zu Prozessen, Speicher, Konfiguration und viel praktisches zur Konfiguration, Ressourcenüberwachung und abschließend eine Anleitung zur Performance-Analyse von Unix-basierten Systemen in 60 Sekunden.

Falls du mit Linux noch nicht vertraut bist, lernst du in dieser Card die Basics zu einem Ubuntu System.

Inhalte / Übungen

Du musst nicht alle Quellen vollständig durchlesen. Vor allem die Bash Reference Manual ist hierfür viel zu umfangreich. Verwende solche Inhalte zum nachschlagen von spezifischen Themen.

Wenn du dich noch mehr für Features in der Shell begeistern möchtest, kannst du dir in unserer Mediathek den Talk pimp my shell Show archive.org snapshot ansehen. Achtung: Für Fortgeschrittene. Vielleicht willst du erst mal ein weing mit Linux arbeiten.

Finde heraus was der man Befehl macht und finde mit der Hilfe von tldr und man heraus was die unten gezeigten Befehle machen. Versuche diese auch testweise zu verwenden.

  • man (Get a more colorful output for man pages)
  • top
  • cat
  • less
  • dpkg -l
  • apt search <text> or apt-cache search <text>
  • apt update
  • apt full-upgrade or apt-get dist-upgrade
  • apt install <package-name>
  • apt policy und apt-cache policy
  • sudo <command>
  • sudo -i or sudo su
  • df -h
  • du -h .
  • ss --listening --tcp
  • ln -s
  • touch
  • env
  • grep (use with |)
  • gzip und gunzip
  • zgrep <needle> log/*.log*
  • chmod
  • chown

Wie Paketmanagement in Ubuntu funktioniert

Lies dir Package management Show archive.org snapshot durch.

Verstehe wie und warum man Paketquellen (Repository) hinzufügt und schau dir an, was bei dir in /etc/apt konfiguriert ist. Schau dir mit apt policy diverse Pakete an. So kannst du sehen, aus welchem Repository ein Paket / eine Paketversion installiert wird.

Du solltest auch verstehen, was es Sicherheitstechnisch bedeutet weitere Paketquellen hinzuzufügen.

Bash

Du solltest die folgenden Dinge kennen und verstehen:

  • cd ~
  • cat ~/.bashrc
  • cd ..
  • ls .
  • Was ist STDOUT und STDERR?
  • Was ist |?
  • Was ist der Unterschied zwischen echo foo > /tmp/txt und echo foo >> /tmp/txt?
  • Was ist eine ENV Variable und wie kann ich diese setzen?
  • Für was benötige ich den export Befehl?
  • Was ist der Unterschied zwischen ' und "?
  • Was ist ein Job?
  • Was ist ein exit code?
  • Was ist die PATH Umgebungsvariable?
  • Was ist ein alias?

Konfigurationsdateien

Finde heraus für was die ~/.bashrc da ist.

Beachte bitte, dass Änderungen an der ~/.bashrc sich nicht auf bereits geöffnete Shells auswirken.

Terminal editor

Wenn du im Terminal Dateien bearbeiten musst / möchtest, musst du einen Terminal Editor verwenden.

# Example with vim

# open the configuration file
vim ~/.bashrc

# navigate to the end of the file,
# press "i" to switch to insert mode
# then type out the line you want to add
export EDITOR=vim

# persist your changes
# press ESC and write the following and then press ENTER
:wq

Note

vim ist ein sehr mächtiger Editor, der viele Shortcuts hat um Text effizient zu bearbeiten. Zum Beispiel kann man im COMMAND mode dt5 eingeben, um alle Zeichen bis zum nächsten Zeichen 5 zu löschen. Es kann sich also lohnen, sich ein wenig mit vim zu beschäftigen. Das ist allerdings nicht Teil dieser Card.

Terminal Shortcuts

Verstehe was die folgenden Shortcuts in der Bash-Shell tun:

Datei Berechtigungen

Verstehe Zugriffsrechte für Dateien:

  • Was bedeutet "ownership" bei Dateien?
  • Kannst du read, write und executable Flags für Dateien erklären?
  • Wie funktioniert die oktale Schreibweise für Berechtigungen?
  • Was bedeutet die Aufteilung user, group und world?
  • Warum brauchen Verzeichnisse executable Permissions?

Shell Scripting

  • Was ist eine shebang?
  • Was ist eine function?
  • Was ist die bash parameter expansion?
  • Schreibe ein Shell Script, das als Parameter einen Pfad zu einem Verzeichnis entgegen nimmt. Zum testen erstellst du dir selbst ein neues Verzeichnis, in dem du diverse Dateien anlegst. Einige der Dateien sollen world readable sein.
    • Das Script muss prüfen, ob es sich dabei wirklich um ein Verzeichnis handelt.
    • Es wird eine Datei erstellt mit dem Namen world-readable-files-<Verzeichnispfad_mit_underscores_statt_/>-<jahr>-<monat>-<tag>-<stunde>-<minute>-<sekunde>.txt
    • In die Datei wird eine Liste aller Dateien in dem angegebenen Verzeichnis geschrieben, welche world readable sind. Es sollen keine Unterverzeichnisse in dieser Liste sein. Nur Dateien! Schau dir dazu den find Befehl an.
    • Schreibe auch die Informationen wie Owner und die ganzen Permissions zu den gefundenen Dateien in die world-readable-files-Datei.
    • Installiere dir shellcheck und wende es auf dein Script an und fixe die Probleme.
    • Führe dein Script mit bash -x aus. Was bringt der Parameter -e?
      • Du kannst diese Parameter innerhalb vom script mit z.B. set -x setzen
Claus-Theodor Riegg
Last edit
7 months ago
Claus-Theodor Riegg
License
Source code in this card is licensed under the MIT License.
Posted by Claus-Theodor Riegg to DevOps Curriculum (2022-01-21 17:10)