Zum Inhalt springen
sw
en

Tippe um zu suchen

Linux

Linux – Grundbefehle für IT-Allrounder

Die wichtigsten Linux-Terminalbefehle kompakt erklärt: Navigation, Dateioperationen, Berechtigungen, Prozesse, Netzwerk und Paketverwaltung.

10 Min Lesezeit Anfänger Zuletzt aktualisiert:

Warum du als IT-Allrounder Linux brauchst

Auch wenn dein Arbeitsalltag hauptsächlich aus Windows besteht: Linux begegnet dir früher oder später. Webserver, NAS-Systeme, Firewalls, Docker-Container, Raspberry Pi, virtuelle Maschinen – ein riesiger Teil der IT-Infrastruktur läuft auf Linux. Wer die Kommandozeile nicht scheut, kann Probleme direkt am Server lösen, ohne eine GUI zu brauchen.

Diese Seite gibt dir einen praxisnahen Einstieg in die wichtigsten Befehle. Du brauchst kein Vorwissen – nur ein Terminal und etwas Neugier.

Terminal öffnen

Das Terminal ist dein Werkzeug. Auf den meisten Desktop-Distributionen öffnest du es mit Strg+Alt+T. Auf einem Server ohne GUI ist das Terminal automatisch das, was dich begrüsst – meistens über SSH.

Das Prompt sieht typischerweise so aus:

seya@server01:~$
  • seya = eingeloggter Benutzer
  • server01 = Hostname
  • ~ = aktuelles Verzeichnis (hier: Home-Verzeichnis)
  • $ = normaler Benutzer (bei Root wäre es #)

Das Linux-Dateisystem ist eine Baumstruktur. Alles beginnt bei / (Root). Kein Laufwerksbuchstabe wie in Windows – stattdessen gibt es feste Verzeichnisse wie /etc (Konfiguration), /var/log (Logs), /home (Benutzerordner), /tmp (temporäre Dateien).

pwd                         # Zeigt, wo du gerade bist ("Print Working Directory")
ls                          # Inhalt des aktuellen Verzeichnisses auflisten
ls -l                       # Detailansicht: Berechtigungen, Grösse, Datum
ls -la                      # Wie -l, aber auch versteckte Dateien (beginnen mit Punkt)
ls -lh                      # Wie -l, aber Dateigrössen menschenlesbar (KB, MB)

cd /etc                     # In das Verzeichnis /etc wechseln
cd ~                        # Ins eigene Home-Verzeichnis springen
cd ..                       # Eine Ebene höher
cd -                        # Zurück ins letzte Verzeichnis (praktisch!)

Beispiel: Logdateien auf einem Server aufspüren

cd /var/log
ls -lh
# -> zeigt alle Logs mit Grösse und Datum

Wichtige Verzeichnisse auf einen Blick

PfadInhalt
/etcKonfigurationsdateien
/var/logLogdateien
/home/usernameHome-Verzeichnis des Benutzers
/tmpTemporäre Dateien (werden bei Neustart gelöscht)
/optOptionale Drittanbieter-Software
/usr/binAusführbare Programme
/etc/systemd/systemEigene systemd-Dienste

Dateien und Verzeichnisse verwalten

mkdir logs                      # Verzeichnis "logs" erstellen
mkdir -p /opt/app/logs          # Verzeichnis inklusive aller Elternordner erstellen

touch datei.txt                 # Leere Datei erstellen (oder Timestamp aktualisieren)

cp datei.txt backup.txt         # Datei kopieren
cp -r /etc/nginx /tmp/nginx-bak # Verzeichnis rekursiv kopieren

mv alte.txt neue.txt            # Datei umbenennen
mv datei.txt /tmp/              # Datei in ein anderes Verzeichnis verschieben

rm datei.txt                    # Datei löschen
rm -rf /tmp/test                # Verzeichnis rekursiv und ohne Rückfrage löschen

ln -s /opt/app/config /etc/app  # Symbolischen Link erstellen

Dateien suchen

find /var/log -name "*.log"             # Alle .log-Dateien unter /var/log suchen
find /home -name "*.txt" -mtime -7      # .txt-Dateien, geändert in den letzten 7 Tagen
find / -name "nginx.conf" 2>/dev/null   # Überall suchen, Fehler unterdrücken

which nginx                             # Pfad zu einem Programm anzeigen
locate nginx.conf                       # Schnelle Dateisuche (aus Index, muss aktuell sein)

Dateiinhalte lesen und durchsuchen

cat datei.txt                   # Kompletten Inhalt ausgeben
less datei.txt                  # Seitenweise blättern (q zum Beenden, / zum Suchen)
head -n 20 datei.txt            # Erste 20 Zeilen
tail -n 50 datei.txt            # Letzte 50 Zeilen
tail -f /var/log/syslog         # Live-Ausgabe: neue Zeilen werden sofort angezeigt

grep – der mächtigste Suchbefehl

grep "error" /var/log/syslog            # Zeilen mit "error" ausgeben
grep -i "ERROR" /var/log/syslog         # Gross-/Kleinschreibung ignorieren
grep -r "timeout" /etc/nginx/           # Rekursiv in einem Verzeichnis suchen
grep -n "fail" /var/log/auth.log        # Mit Zeilennummern
grep -v "DEBUG" /var/log/app.log        # Zeilen OHNE "DEBUG" anzeigen
grep -c "error" /var/log/syslog         # Nur Anzahl der Treffer ausgeben

# Kombinieren mit Pipe (|)
tail -f /var/log/syslog | grep "error"  # Nur Fehler im Live-Log anzeigen
cat access.log | grep "192.168.1.10"    # Alle Einträge einer bestimmten IP

Benutzer, Gruppen und Berechtigungen

Wer bin ich?

whoami                  # Aktuellen Benutzernamen anzeigen
id                      # UID, GID und alle Gruppen des aktuellen Benutzers
id seya                 # Infos zu einem anderen Benutzer
groups                  # Nur die eigenen Gruppen

sudo – als Root handeln

sudo apt update                 # Befehl als Root ausführen
sudo -i                         # Root-Shell öffnen (Vorsicht!)
sudo -u www-data bash           # Shell als anderer Benutzer öffnen
su - seya                       # Zu anderem Benutzer wechseln (braucht dessen Passwort)

Benutzer verwalten

useradd -m -s /bin/bash seya    # Benutzer erstellen (mit Home-Verzeichnis und Bash)
passwd seya                     # Passwort setzen oder ändern
usermod -aG sudo seya           # Benutzer zur sudo-Gruppe hinzufügen
usermod -aG docker seya         # Benutzer zur docker-Gruppe hinzufügen
userdel -r seya                 # Benutzer löschen (inkl. Home-Verzeichnis)

cat /etc/passwd                 # Alle Benutzer auflisten
getent group sudo               # Mitglieder einer Gruppe anzeigen

Dateiberechtigungen lesen und setzen

Linux-Berechtigungen bestehen aus drei Teilen: Owner (Besitzer), Group (Gruppe), Others (alle anderen). Jeder Teil hat Read (r=4), Write (w=2), Execute (x=1).

ls -l datei.sh
# -> -rwxr-xr-- 1 seya staff 1234 Jun 23 10:00 datei.sh
#    rwx        = Owner kann lesen, schreiben, ausführen
#    r-x        = Gruppe kann lesen und ausführen
#    r--        = Andere können nur lesen
chmod 755 skript.sh             # rwxr-xr-x (Owner alles, Rest nur lesen/ausführen)
chmod 644 config.txt            # rw-r--r-- (Owner schreiben, Rest nur lesen)
chmod +x skript.sh              # Ausführbar machen (für alle)
chmod -x skript.sh              # Ausführbar-Flag entfernen

chown seya datei.txt            # Besitzer ändern
chown seya:staff datei.txt      # Besitzer und Gruppe ändern
chown -R www-data /var/www      # Rekursiv Besitzer für ganzes Verzeichnis setzen

Prozesse und Systemübersicht

ps aux                          # Alle laufenden Prozesse aller Benutzer
ps aux | grep nginx             # Prozesse nach Name filtern
top                             # Live-Prozessübersicht (q zum Beenden)
htop                            # Verbesserte top-Version (muss installiert werden)

kill 1234                       # Prozess mit PID 1234 beenden (freundlich)
kill -9 1234                    # Prozess erzwungen beenden (SIGKILL)
pkill nginx                     # Prozess nach Name beenden
killall -9 python3              # Alle Instanzen eines Programms beenden

Systemressourcen im Blick

df -h                           # Festplattennutzung (menschenlesbar)
df -h /var                      # Nur ein bestimmtes Dateisystem
du -sh /var/log                 # Grösse eines Verzeichnisses
du -sh /var/log/*               # Grösse aller Unterordner

free -h                         # RAM-Nutzung (total, used, free, cached)
uptime                          # Systemlaufzeit und CPU-Last (1/5/15 Min)
uname -a                        # Kernel-Version und Architektur
lscpu                           # CPU-Informationen
lsblk                           # Blockgeräte (Festplatten, Partitionen)

Typischer Troubleshooting-Ablauf: Disk Full

df -h                           # Welche Partition ist voll?
du -sh /var/log/*               # Was belegt am meisten Platz?
ls -lhS /var/log/               # Grösste Dateien zuerst anzeigen
# -> Verdächtige Logdatei gefunden: 8 GB nginx-access.log
truncate -s 0 /var/log/nginx/access.log   # Datei leeren (nicht löschen!)

Netzwerkbefehle

ip a                            # Alle Netzwerkinterfaces mit IP-Adressen
ip r                            # Routing-Tabelle
ip link show                    # Interface-Status (up/down)

ss -tulpn                       # Alle offenen Ports und zugehörige Prozesse
ss -tulpn | grep :80            # Wer hört auf Port 80?

ping -c 4 8.8.8.8               # 4 Pings an Google DNS (Erreichbarkeit testen)
traceroute 8.8.8.8              # Netzwerkpfad zum Ziel verfolgen
nslookup firma.ch               # DNS-Auflösung testen
dig firma.ch                    # Detaillierte DNS-Abfrage
host 192.168.1.1                # Reverse-DNS-Lookup

curl -I https://firma.ch        # HTTP-Header einer URL abrufen
curl -s https://api.example.com/status  # API-Endpunkt testen
wget https://example.com/datei.zip      # Datei herunterladen

Offene Ports prüfen – wer lauscht wo?

ss -tulpn
# -> Zeigt: Proto, Local Address:Port, Process
# Beispiel-Output:
# tcp  LISTEN  0  128  0.0.0.0:22    users:(("sshd",pid=1234))
# tcp  LISTEN  0  128  0.0.0.0:80    users:(("nginx",pid=5678))

Paketverwaltung

Debian / Ubuntu (apt)

apt update                          # Paketlisten aktualisieren (kein Upgrade!)
apt upgrade -y                      # Alle installierten Pakete aktualisieren
apt install htop curl vim -y        # Pakete installieren
apt remove paketname                # Paket entfernen
apt autoremove                      # Nicht mehr benötigte Pakete aufräumen
apt search stichwort                # Nach Paket suchen
apt show nginx                      # Details zu einem Paket
dpkg -l | grep nginx                # Prüfen ob ein Paket installiert ist

RHEL / Rocky / AlmaLinux (dnf)

dnf update -y                       # System aktualisieren
dnf install htop curl vim -y        # Pakete installieren
dnf remove paketname                # Paket entfernen
dnf search stichwort                # Nach Paket suchen
rpm -qa | grep nginx                # Installierte Pakete filtern

Pipes, Umleitungen und praktische Shortcuts

Diese Konzepte machen die Shell so mächtig:

# Pipe: Output eines Befehls als Input des nächsten
ps aux | grep nginx
cat /var/log/syslog | grep error | tail -n 20

# Ausgabe in Datei umleiten
echo "Backup erfolgreich" > backup.log      # Datei überschreiben
echo "Weiterer Eintrag" >> backup.log       # Datei anhängen
ls -la /etc > /tmp/etc-listing.txt

# Fehlerausgabe
befehl 2>/dev/null                          # Fehlermeldungen unterdrücken
befehl > ausgabe.log 2>&1                   # Alles (stdout + stderr) in Datei

# Mehrere Befehle verketten
apt update && apt upgrade -y                # Zweiter Befehl nur wenn erster erfolgreich
rm /tmp/test || echo "Löschen fehlgeschlagen"  # Zweiter Befehl wenn erster scheitert

Weitere nützliche Shortcuts im Terminal:

TastenkombinationFunktion
TabAutovervollständigung
Strg+CAktuellen Befehl abbrechen
Strg+ZProzess in Hintergrund schieben
Strg+LTerminal leeren (wie clear)
Pfeil hochVorherigen Befehl aus History
Strg+RIn der Befehlshistorie suchen
!!Letzten Befehl wiederholen (z.B. sudo !!)

Häufige Troubleshooting-Situationen

Dienst startet nicht

systemctl status nginx          # Status und letzte Logzeilen anzeigen
journalctl -u nginx -n 50       # Letzte 50 Log-Einträge des Dienstes
journalctl -u nginx -f          # Live mitlesen
nginx -t                        # Konfiguration auf Syntaxfehler prüfen

Verbindung schlägt fehl

ping 192.168.1.10               # Host erreichbar?
ss -tulpn | grep :80            # Lauscht der Dienst überhaupt?
curl -v http://192.168.1.10     # HTTP-Verbindung testen mit Details
# Firewall prüfen:
iptables -L -n                  # Regeln anzeigen (ältere Systeme)
ufw status                      # UFW-Firewall-Status (Ubuntu)
firewall-cmd --list-all         # firewalld-Status (RHEL/Rocky)

Welcher Prozess blockiert eine Datei oder einen Port?

lsof /var/log/nginx/error.log   # Welcher Prozess hat diese Datei geöffnet?
lsof -i :80                     # Welcher Prozess nutzt Port 80?
fuser 80/tcp                    # PID des Prozesses auf Port 80

Zu wenig Festplattenplatz

df -h                                   # Übersicht aller Partitionen
du -sh /var/log/* | sort -rh | head -10 # Top 10 der grössten Log-Verzeichnisse
find /var/log -name "*.log" -size +100M # Logs grösser als 100 MB finden
journalctl --disk-usage                 # Wie viel Platz belegen die journald-Logs?
journalctl --vacuum-size=500M           # journald-Logs auf 500 MB begrenzen

Textdateien bearbeiten

Auf einem Server ohne GUI brauchst du einen Terminal-Editor. Die zwei wichtigsten:

nano – einfach, anfängerfreundlich:

nano /etc/hosts                 # Datei bearbeiten
# Strg+O = Speichern, Strg+X = Beenden, Strg+W = Suchen

vim – mächtig, aber mit Lernkurve:

vim /etc/nginx/nginx.conf
# i = Insert-Modus (schreiben)
# Esc = Normal-Modus
# :w = Speichern
# :q = Beenden
# :wq = Speichern und Beenden
# :q! = Beenden ohne Speichern
# /suchbegriff = Suchen, n = nächster Treffer

Hast du die Grundbefehle im Griff, sind das die logischen nächsten Schritte:

Weiterlernen

Videos

YouTube
Linux Terminal Tutorial für Anfänger - Teil 1 - Befehle ls und cd
YouTube
Linux-Grundlagen: Effizient mit der Kommandozeile arbeiten

Kommentare

Frage, Verbesserungsvorschlag oder eigene Erfahrung zu diesem Artikel? Schreib einen Kommentar. Neue Beiträge erscheinen nach kurzer Moderation.

  • Lade Kommentare …
Kommentar schreiben