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.
- The linux command line for beginners Show archive.org snapshot
- Installiere
tldr
mit dem Befehlsudo apt install tldr
. Damit kannst du dir Beispiele für die Befehle Anzeigen lassen. Zum Beispieltldr ss
um Beispiele für denss
Befehl anzeigen zu lassen. - Learn Enough Command Line to be Dangerous Show archive.org snapshot (du findest das in unserer Bibliothek => Google Drive Show archive.org snapshot )
- Linux file permissions explained Show archive.org snapshot
- The Beginner’s Guide to Shell Scripting: The Basics Show archive.org snapshot
- Bash Reference Manual Show archive.org snapshot
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>
orapt-cache search <text>
apt update
-
apt full-upgrade
orapt-get dist-upgrade
apt install <package-name>
-
apt policy
undapt-cache policy
sudo <command>
-
sudo -i
orsudo su
df -h
du -h .
ss --listening --tcp
ln -s
touch
env
-
grep
(use with|
) -
gzip
undgunzip
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
undecho 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.
- Wähle einen Editor: (
vim
Show archive.org snapshot
oder
nano
Show archive.org snapshot
)
- Wenn du
vim
verwendest, lerne wie du den Editor beendest Show archive.org snapshot :-
:q
Editor beenden -
:wq
Editor beenden und die Datei speichern -
:q!
Editor beendet und die Datei nicht speichern
-
- Wenn du
- Stelle deinen gewählten Editor als Standard ein: $EDITOR Show archive.org snapshot :
# 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 imCOMMAND
modedt5
eingeben, um alle Zeichen bis zum nächsten Zeichen5
zu löschen. Es kann sich also lohnen, sich ein wenig mitvim
zu beschäftigen. Das ist allerdings nicht Teil dieser Card.
Terminal Shortcuts
Verstehe was die folgenden Shortcuts in der Bash-Shell tun:
- Up-arrow
Tab
CTRL+R
-
CTRL+Z
/jobs
/fg
/bg
Show archive.org snapshot
Datei Berechtigungen
Verstehe Zugriffsrechte für Dateien:
- Was bedeutet "ownership" bei Dateien?
- Kannst du
read
,write
undexecutable
Flags für Dateien erklären? - Wie funktioniert die oktale Schreibweise für Berechtigungen?
- Was bedeutet die Aufteilung
user
,group
undworld
? - 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
- Du kannst diese Parameter innerhalb vom script mit z.B.