Inhaltsverzeichnis
Der Artikel beschäftigt sich mit den gängigsten Linux-Terminal Befehlen, die dir die Arbeit erleichtern.
Jetzt wünsche ich dir viel Spaß beim Stöbern und Happy Terminaling ;).
Wichtige Regel
Wie funktioniert die Linux-Shell
Eingaben in die Shell werden von rechts nach links abgearbeitet. Wird zum Beispiel der Befehl cd $home abgeschickt, wird intern die Variabel $home aufgelöst und dann an cd weitergeleitet.
Beispiel für echo $home
- $home wird in ein Pfad übersetzt, z.B. /home/user
- /home/user wird an Befehl echo übergeben
- echo gibt den Befehl/Pfad in der Konsole aus
Wie Shell-Befehle verknüpft werden
Es gibt zwei Arten Befehle in der schnell zu verknüpfen:
- Mit ; können mehrere Ausführungen in einem Befehl verarbeitet werden. Z.B. ls;ls gibt zweimal das aktuelle Verzeichnis im Terminal aus
- Mit && können mehre Ausführungen in einem Befehl verarbeitet werden, dabei muss jeder Befehl gültig ausgeführt werden. Schlägt nur ein Befehl (Ausführung von links nach rechts, der Befehlskette) fehl, wird die Verarbeitung abgebrochen. Beispiel ls -blablub && ls
Durch das Linux-Dateisystem navigieren
Damit im Terminal die Verzeichnis-Struktur einfach visuell angezeigt werden kann, ist die Erweiterung tree zu installieren.
Wie die Linux-Erweiterung installiert wird
- Die Erweiterung tree mit: apt-get install tree installieren.
- Die Erweiterung im gewünschten Verzeichnis mit tree -l 1 aufrufen
Wie die Linux-Erweiterung tree benutzt wird
Beispiel: tree -L 2 /home zeigt in einer visuellen Baumstruktur ab /home zwei Verzeichnisstufen nach unten an.
Wichtige Befehle
Dateien und Verzeichnisse
Übersicht wichtiger Befehle rund um das Navigieren im Terminal
Linux Terminal Befehl | Erklärung |
ls (Pfad) (Flag) | Der Befehl ls zeigt Dateien im Verzeichnis an, indem sich aktuell (relativ) das Terminal befindet.
Mit der Pfad-Angabe, kann über ls ein Verzeichnis angesprochen werden, z.B. /usr/bin. Wird kein Pfad angegeben, wird das aktuelle Verzeichnis des Terminal aufgelistet. Mit der Flag-Angabe wird die Auflistung des Verzeichnis in unterschiedlicher Weise im Terminal ausgegeben. |
ls -a | Der Flag -a ist die Kurzschreibweise für all und listet alle Dateien (versteckte, wie auch System-Dateien) im aktuellen Verzeichnis auf |
ls -l | Der Flag -l ist die Kurzschreibweise für list und listet Dateien im aktuellen Verzeichnis und die dazugehörige Berechtigungen auf |
ls -la | Der Befehl ls -a und ls -l können auch zusammen ausgeführt werden. Dabei werden alle Dateien inklusive der Berechtigungen angezeigt. |
ls -la | less | Über den Befehl | less können Ausgaben, die größer als das Terminal-Fenster sind Seite für Seite durchgeblättert werden.
Der less-Modus kann über die Taste Q wieder verlassen werden. |
ls -r | Der Flag -r bedeutet reverse (umkehren) und zeigt Dateien im aktuellen Verzeichnis sortiert von Z-A nach Dateinamen an. |
ls -R | Der Flag -R bedeutet rekursiv und gibt alle Dateien und Verzeichnisse des Zielordners aus.
Tipp: Der Einsatz des pager less lohnt sich hier, wenn die Ausgabe zu groß wird. ls -R | less |
ls -t | Der Flag -t sortiert die Dateien vom neusten zum ältesten Der Flag -r bedeutet reverse (umkehren) und zeigt Dateien im aktuellen Verzeichnis sortiert von Z-A nach Dateinamen an. |
ls -l | Der Flag -i zeigt die Inodes Informationen an |
ls-h | Der Flag -h steht für human-readable und zeigt Informationen in vereinfachter / lesbarer Form an.
Beispiel: Eine Datei ist ~ 1,2MB groß Mit ls -l wird der Speicherverbrauch als Zahl 1271689 angezeigt, mit ls -lh wird der Speicherverbrauch als Zahl 1.2MB angezeigt. |
ls -ld | Der Flag -d steht für directory und zeigt in Kombination mit ls -ld Informationen über ein Verzeichnis, nicht die darin enthaltenden Dateien an. |
less | Mit dem Terminal Befehl less kann der „pager“ gestartet werden. Dieser unterteilt ein großes Dokument oder Ausgabe in mehrere Seiten, die auf Basis der Terminal-Fenster Größe bestimmt werden.
Less kann auch mehrere Ausgaben gleichzeitig lesen, dabei werden die Namen mit einem Leerzeichen getrennt aufgelistet. Beispiel: less datei1.txt datei2.txt Um direkt in die zweite Datei zu gelangen, kann im Terminal der Befehl n: (Ein N und Doppelpunkt) eingegeben werden, dann springt das Terminal zum Anfang der zweiten, dritten, etc. Datei. Folgende Optionen bietet der Terminal Befehl less
|
pwd | pwd steht für print working directory und gibt den absoluten relativen Pfad an, indem sich der Terminal gerade befindet. Logge ich mich mit meinem Nutzer ein und gebe danach direkt pwd ein, erhalte ich in der Konsole den Pfad /home/marcus. |
cd .. | Mit cd .. wird in das übergeordnete Verzeichnis gewechselt. |
cat | cat steht für concatenate (verketten) und ermöglicht Dateien zusammenzuführen. |
head | Liest die ersten 10 Zeilen einer Datei und gibt diese auf dem Terminal aus.
Eignet sich gut, um Log-Dateien zu analysieren |
tail | Liest die letzten 10 Zeilen einer Datei und gibt diese im Terminal aus.
Eignet sich gut, um Log-Dateien zu analysieren |
man | Der Befehl man Bietet Hilfe / weiterführende Informationen für viele Befehle in Linux.
Werden Informationen zum Befehl less benötigt, muss im Terminal man less eingegeben werden. Der „man-Modus“ kann mit Drücken der Taste Q verlassen werden. |
stat | stat gibt zusätzliche Informationen zu angefragter Ressource. Beispiel: stat datei.xt oder stat /var/logs |
set -x | Setzt das Terminal in einen Debug-Modus, alle Eingaben werden aufgeschlüsselt, wie dies Shell diese übersetzt. |
touch | Der Befehl touch ermöglicht das Verändern des Zeit- und Datumstempel einer Datei. Existiert die Datei nicht, wird diese von touch erstellt. Werden keine Parameter angegeben und eine Datei angetoucht, so wird immer der aktuelle Zeitpunkt herangezogen.
|
Was Soft- und Hardlinks sind
Soft- und Hardlinks ermöglichen das Referenzieren von Verzeichnissen und Dateien über einen Namen. Vorteilhaft ist der Einsatz, um bzw. Dateien oder Verzeichnisse in tiefen Verzeichnisstrukturen bequem zu verlinken.
Was ist ein Inode in Linux
Inode ist eine Datenstruktur, die als Zahl identifiziert wird und Informationen zur Datei speichert, welche automatisch eine Inode-Nummer bei Erstellung erhält.
Was ist ein Hardlink in Linux im Detail
Ein Hardlink zeigt auf die inode der referenzierten Dateien und kann über ln Zieldatei Linkdatei angelegt werden
Wichtige Punkte bei Hardlinks:
- Hardlinks sind nur auf Dateien anwendbar
- Hardlinks bleiben auch vorhanden, wenn die referenzierte Datei gelöscht oder verschoben wurde
Was ist ein Softlink in Linux im Detail
Ein Softlink zeigt bzw. referenziert direkt auf ein Verzeichnis oder Datei und wird mit ln -s Zieldatei Linkdatei angelegt.
Wichtige Punkte bei Softlinks:
- Softlinks können auf Verzeichnisse und Dateien angewendet werden
- Softlinks bleiben als ungültige Referenz zurück, wenn referenzierte Datei oder Verzeichnis (Zieldatei) gelöscht wurde
Informationen über das System erhalten
Übersicht wichtiger Befehle rund um das Anzeigen von wichtigen Informationen zum Linux System
Linux Terminal Befehl | Erklärung |
lsusb | Übersicht welche USB an dieses System angeschlossen sind |
lsblk (list block devices) | Übersicht welche Block-Geräte an diesem System angeschlossen sind. |
df | Übersicht über den verwendeten Speicher.
Aufgrund der schlechten Lesbarkeit, ist es zu empfehlen die Flags -h und -T einzusetzen.
|
uptime | Zeigt an wie lange das Linux-System läuft. |
man | Der Befehl man zeigt eine Erklärung zu einem Befehl an. Möchte ich Informationen zum Befehl und den eingesetzten Informationen zu uptime erhalten, gebe ich das Terminal: man uptime ein.
Die man-pages werden mit Drücken der Taste Q wieder verlassen. Tipp: mit man uptime | less lässt sich die mehrseitige Ausgabe auf mehre Seiten unterteilen. |
uname | Der Befehl zeigt direkt an um welches Betriebssystem es sich handelt
|
lsb_release -a | Zeigt detaillierte Release Informationen zum System an. |
cat /proc/meminfo | Der Befehl cat /proc/meminfo zeigt Informationen zum Speicher an. Weil viele Informationen vorliegen ist es zu empfehlen mit cat /proc/meminfo | less die Informationen über mehre Fenster ausgeben zu lassen. |
cat /proc/mounts | Der Befehl cat /proc/mounts zeigt Übersicht über die verschiedenen Mount-Points |
cat /proc/partitions | Der Befehl cat/proc/partitions zeigt Übersicht über die verschiedenen Partitionen des System. |
Anzeigen und Bearbeiten von Prozessen
Übersicht wichtiger Befehle rund um das Anzeigen und Bearbeiten von Prozessen im Linux System
Was ist ein Prozess
Ein Prozess ist ein ausführbares Programm mit einer eindeutigen Nummer (PID).
Erklärung zum Bild
USER | Der aktuell angemeldete Benutzer |
PID | PID ist die eindeutige, einzigartige Nummer des Prozess, auch Prozess-ID genannt. |
%CPU | %CPU zeigt die durchschnittliche CPU-Belastung für den Prozess an |
%MEM | %MEM zeigt die durchscnittliche Memory-Belastung für den Prozess an |
VSZ | VSZ steht für „virtual set size“, was die Virtuelle Größe des Programms ist. |
RSS | RSS steht für „resident set size“, was die Summe aus der Größe des Codes und der Größe der Daten ist. |
TTY | TTY zeigt den im Terminal ausgeführten Befehl an |
STAT | |
START | START zeigt an, wann der Prozess gestartet wurde |
TIME | TIME zeigt an, wie lange der Prozess gelaufen ist |
COMMAND | COMMAND zeigt an, welcher Command-Befehl ausgeführt wurde beim Start des Prozesses |
Linux Terminal Befehl | Erklärung |
& | Mit dem Kaufmännischen-Und & können Prozesse in den Hintergrund verschoben werden.
Prozesse die über das & in der Hintergrund verschoben werden sind nur so lange aktiv wie die Terminal-Sitzung. Beispiel: sleep 8888 & erstellt einen neuen Prozess und lässt diesen 8888 Millisekunden im Hintergrund schlafen. |
jobs | Der Befehl jobs zeigt alle Prozesse, die in der aktuellen Terminal-Sitzung im Hintergrund laufen.
Der angezeigte Prozess mit einem + ist der letzte Job, welcher zuletzt in den Hintergrund gesetzt wurde. |
fg | Der Befehl fg steht für Foreground (Vordergrund) und holt den zuletzt in den Hintergrund gelegten Prozess wieder nach vorne.
Merke:
|
nohub oder disown | Der Befehl nohub sorgt dafür, dass der Prozess beim Beenden des Terminal so lange weiter läuft, bis sich dieser selbständig beendet ( fertig ist). Beispiel: nohub sleep 2000 &
Merke: Ein mit nohub in den Hintergrund gestarteten Prozess kann nicht über den Befehl fg oder auf andere Weise wieder in den Vordergrund geholt werden. Der Prozess wird selbstständig von Linux verwaltet und entsprechend beendet. Der Befehl disown schiebt einen schon laufenden Prozess in den Hintergrund und ignoriert ab diesem Zeitpunkt das Beenden des Terminal. Beispiel: disown %1 würde den Prozess mit der Job-ID in den Hintergrund Was ist der Unterschied zwischen nohub und disown? nohub wird eingesetzt, wenn ein neuer Hintergrund-Job inizialisiert wird disown wird eingesetzt, wenn ein schon laufender Prozess in den Hintergrund geschoben werden soll. |
ps -eaf | grep | Mit ps -eaf werden alle laufenden Prozesse angezeigt
Tipp: Mit ps -eaf | grep kann gezielt nach einen Prozess gesucht werden, zum Beispiel ps -eaf | grep sleep |
ps aux | less | |
kill | kill beendet einen Prozess, dabei muss explizit die PID Nummer angegeben werden.
Gängige Optionen, die bei kill benutzt werden können:
Beenden bedeutet der Prozess hat die Chance sich selber herunterzufahren, also ein sauberer Shut-Down, wie wenn du deinen Pc über die Beenden-Funktion ausschaltest. Kill lässt den Prozess direkt beenden, gleichzusetzen, als würdest du das Stromkabel an deinem Rechner ziehen. Kill sollte nur eingesetzt werden, wenn der Prozess sich nicht normal beendet lässt, da es unter Umständen zu Schäden am Prozess kommen kann, wie z.B. das System-Dateien nicht sauber bereinigt wurden und deshalb der Prozess nicht mehr hochfährt. |
killall | Der Befehl killall Prozess-Name beendet alle Prozesse, die den Namen Prozess-Name haben.
Anmerkung:
|
pkill | Pikill ist ein Hilfsmittel zum Beenden von Prozess, bei denen der Anwender nicht den kompletten Namen kennt. Zum Beispiel würden 10 Prozesse mit dem Namen sleep20202020 laufen, wird mit pkill sle alle Prozesse die mit dem Namen sle beginnen beenden.
Anmerkung: Der Befehl pkill kann speziell als Root sehr gefährlich werden, weil darauf geachtet werden muss, dass nicht ausversehen andere Prozesse mit gleichen Anfangsbuchstaben beendet werden. |
pgrep | Der Befehl pgrep name zeigt alle PID an, die unter name gefunden wurden. Beispiel: pgrep slee würde alle Prozesse mit Namen sleep anzeigen.
Tipp: mit pgrep -a name wird zusätzlich der Befehl beim Starten des Prozesses angzeigt. |
Dateien und Verzeichnisse
Übersicht wichtiger Befehle rund um Arbeiten mit Dateien und Verzeichnissen in einem Linux System
Linux Terminal Befehl | Erklärung |
rm | Der Befehl rm löscht unwiderruflich Dateien.
Nützliche Flags:
Beispiel Kombination Flag -r und -f In diesem Beispiel lösche ich ein Verzeichnis rekursiv (-r) UND bestätige (-f) das alles im Ordner gelöscht werden soll.
|
lsblk (list block devices) | Übersicht welche Block-Geräte an diesem System angeschlossen sind. |
df | Übersicht über den verwendeten Speicher.
Aufgrund der schlechten Lesbarkeit, ist es zu empfehlen die Flags -h und -T einzusetzen.
|
mkdir | mkdir steht für make directory und erstellt einen oder mehrere Ordner. Mkdir kann im Standard nur Ordner auf gleicher Ebene erstellen, wird versucht ein Subordner wie ordner1/kindordner2 anzulegen, wird ein Fehler geschmissen. Dafür gibt es den Flag -p
|
rmdir | rmdir löscht nur leere Ordner. Da dieser Befehl nicht sehr praktikabel ist, sollte stattdessen immer rm benutzt werden. Möchtest du einen Ordner löschen, der wiederum Ordner oder Dateien beinhaltet, nutze rm (siehe Beschreibung oben). |
cp | cp steht für copy und kopiert Dateien/Verzeichnisse
Beispiel kopieren von Verzeichnis „/irgendwo/kopiereMich“ in das Verzeichnis „/etc/hierrein/
Beispiel kopieren von allen Dateien aus Verzeichnis /kopieremich/, die mit „g“ beginnen in das aktuelle Verzeichnis, indem sich der Terminal befindet.
|
mv |
mv steht für move. Mit move kann eine Datei/Verzeichnis verschoben oder umbenannt werden.
Beispiel kopieren von“kopiereMich.txt“aus aktuellen Verzeichnis in „/etc/hierrein/
Beispiel Umbenennung der Datei „kopiereMich.txt“ in „kopiereMichNicht.txt“
|
Benutzer, Gruppen und Berechtigungen
Übersicht wichtiger Befehle rund um Arbeiten mit Benutzer, Gruppen und Berechtigungen in einem Linux System.
Wie die Struktur der Berechtigungen aufgebaut ist
Die Berechtigungen unterteilen sich in 9-Bits, davon sind jeweils 3-Bits von links nach rechts dem Nutzer, der Gruppe und allen Anderen einer Datei oder Verzeichnis zugeordnet.
Merkmale der Berechtigung
- r steht für read (Leserechte)
- w steht für write (Schreibrechte)
- x steht für execute (Ausführungsrechte)
- – steht (außer am Anfang (!) ) für keine Rechte
- – am Anfang steht für eine Datei
- d am Anfang steht für einen Ordner
- l am Anfang steht für einen Symlink (symbolischen Link)
Die 3-Bit-Gruppen im Detail.
Erklärung anhand der Berechtigung (siehe Grafik Zeile 1): -rw-rw-r– 2 marcus marcus
- Der Mittelstrich – am Anfang sagt aus, dass es sich um eine Datei handelt
- Erste Bit-Gruppe rw- ist dem Nutzer marcus zugeordnet, dieser hat Lese-, Schreib- und keine Ausführungsrechte
- Zweite Bit-Gruppe rw- ist der Gruppe marcus zugeordnet, diese hat Lese-, Schreib- und keine Ausführungsrechte
- Dritte Bit-Gruppe r– ist alle Anderen zugeordnet, diese haben Lese-, keine Schreib- und keine Ausführungsrechte
Erklärung anhand der Berechtigung (siehe Grafik Zeile 2): d rwx rwx r-x 3 marcus marcus
- Das d sagt aus, dass es sich um einen Ordner handelt
- Erste Bit-Gruppe rwx- ist dem Nutzer marcus zugeordnet, dieser hat Lese- Schreib- und Ausführungsrechte
- Zweite Bit-Gruppe rwx ist der Gruppe marcus zugeordnet, diese hat Lese- Schreib- und Ausführungsrechte
- Dritte Bit-Gruppe r-x ist alle Anderen zugeordnet, diese haben Lese-, keine Schreib- und Ausführungsrechte
Die Grundlagen der Berechtigung in Linux
- Root ist der Benutzer mit den höchsten Berechtigungen in Linux
Linux Terminal Befehl | Erklärung |
sudo | sudo steht für switch user do und bedeutet das dem Nutzer temporär höhere Rechte zugewiesen werden. |
chmod | |
set uid bit
set gid bit
|
Schreibe einen Kommentar