Text size
Ausprobiert & getestet7 Min. Lesezeit

Die Linux-Befehle, die ich jeden Tag benutze

Die kurze Liste, die die meisten meiner Fehlerbehebungen abdeckt, plus ein Cheat-Sheet.

The Linux commands I use every day
KI-generierte Illustration

Kubernetes, Cloud-Konsolen und schicke Dashboards sind großartig. Aber wenn etwas wirklich schief geht, landen wir früher oder später in einem Terminal auf einer Linux-Maschine oder in einem Container und tippen die gleichen Befehle ein, die wir seit Jahren benutzen.

Du musst keine Hunderte von Befehlen kennen. Man muss die richtigen 20 oder 30 sehr gut kennen. Hier sind meine.

Prozesse und Dienstleistungen

Was läuft und nutzt Ressourcen?

top                 # live view of CPU, memory and processes (press 1 for per-CPU, M to sort by memory)
htop                # friendlier version, if installed
ps aux --sort=-%mem | head   # top memory users
ps -ef | grep nginx          # find a specific process
pgrep -a java                # same, simpler

Dienstleistungen mit Systemd:

systemctl status nginx       # is it running? recent log lines too
systemctl restart nginx
systemctl list-units --failed   # what's broken?
journalctl -u nginx -f       # follow a service's logs
journalctl -u nginx --since "1 hour ago"
journalctl -p err -b         # all errors since last boot

Dinge aufhalten:

kill <pid>          # polite request to stop (SIGTERM)
kill -9 <pid>       # force (SIGKILL), only when the polite way fails

Festplatten und Dateien

Der Speicherplatz ist zu kurz. Diese finden es schnell:

df -h                        # free space per filesystem
df -i                        # free inodes (yes, you can run out of these too)
du -sh /var/* | sort -h      # which folders are big?
ncdu /var                    # interactive disk usage browser, if installed
lsof +L1                     # deleted files still held open (space not freed until process restarts)

Suche und Lesen von Dateien:

find /var/log -name "*.log" -mtime -1      # logs modified in the last day
find / -size +1G 2>/dev/null               # files larger than 1 GB
tail -f /var/log/syslog                    # follow a log
less +F app.log                            # follow, but can scroll back (Ctrl+C, then F again)
grep -ri "error" /var/log/app/             # search recursively, case-insensitive
grep -c "500" access.log                   # count matching lines

Die meisten Produktionsprobleme sind langweilig: eine volle Festplatte, ein abgestürzter Prozess, eine falsche Berechtigung, ein geschlossener Port. Die Befehle, die langweilige Probleme schnell finden, sind die wertvollsten.

Gedächtnis und Leistung

free -h             # memory and swap usage
vmstat 1            # CPU, memory, swap, I/O every second
iostat -xz 1        # disk I/O per device (from sysstat)
uptime              # load average
dmesg -T | tail     # kernel messages, including OOM kills and hardware errors

Ein kurzer Tipp: free zeigt viel Speicher als "Buff/Cache". Das ist normal. Linux verwendet freien Speicher für Caching und gibt ihn zurück, wenn nötig. Schau stattdessen nach "verfügbar".

Wenn ein Prozess wegen zu viel Speicher verwendet wird, dmesg -T | grep -i oom Normalerweise gibt er die Details.

Netzwerk

ip a                         # IP addresses of all interfaces
ip r                         # routing table
ss -tulpn                    # which ports are listening, and by which process
ss -tan state established    # active TCP connections
curl -v https://example.com  # full HTTP request with headers and TLS info
curl -o /dev/null -s -w "%{http_code} %{time_total}\n" https://example.com   # status and timing
dig example.com +short       # DNS lookup
dig @8.8.8.8 example.com     # ask a specific DNS server
nc -zv db.internal 5432      # is the port reachable?
mtr example.com              # traceroute and ping combined
tcpdump -i any port 443 -nn  # capture packets (needs root)

ss -tulpn Alleine beantwortet die Hälfte aller "Warum kann ich mich nicht verbinden?" Fragen: entweder hört nichts auf diesem Port, oder es hört auf 127.0.0.1 anstelle aller Schnittstellen.

Benutzer, Berechtigungen und Identität

whoami && id                 # who am I, what groups?
sudo -l                      # what am I allowed to run with sudo?
ls -la                       # permissions, owners, hidden files
chmod 640 file && chown app:app file
namei -l /path/to/file       # permissions of every directory along a path

namei -l ist ein verstecktes Juwel, wenn ein Dienst eine Datei nicht lesen kann und man nicht sehen kann, warum: oft ist es ein Elternverzeichnis ohne Ausführungsberechtigung.

Textverarbeitung

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head   # top client IPs
cut -d: -f1 /etc/passwd                                         # first field
sed -n '100,120p' big.log                                       # lines 100 to 120
jq '.items[].metadata.name'                                     # parse JSON
wc -l file                                                      # count lines

Lernen awk, sort, uniq und jq verwandelt Logfiles in Antworten.

Effiziente Arbeit

  • Ctrl+R Sucht nach Ihrem Kommando-Verlauf.
  • !! wiederholt den letzten Befehl (sudo !! Wenn Sie vergessen haben, zu bedienen.
  • tmux oder screen Halten Sie die Sitzungen am Leben, falls Ihre Verbindung abfällt.
  • watch -n 2 'kubectl get pods' Wiederholt alle zwei Sekunden einen Befehl.
  • man und tldr Für schnelle Hilfe mit Beispielen.

Das Cheat-Blatt

Das Problem Erste Befehle
Dienst aus systemctl status, journalctl -u <svc> -n 100
Festplatte voll df -h, du -sh /* \| sort -h, lsof +L1
Hohe CPU top, ps aux --sort=-%cpu \| head
Aus dem Gedächtnis free -h, dmesg -T \| grep -i oom
Ich kann nicht verbinden. ss -tulpn, nc -zv host port, curl -v
DNS-Probleme dig name, cat /etc/resolv.conf
Langsamer Laufwerk iostat -xz 1, vmstat 1
Genehmigung verweigert id, ls -la, namei -l path
Was ist bei der Boot journalctl -b -p err, dmesg -T

Meine Meinung: Tools kommen und gehen, aber die Linux-Befehlszeile ist immer noch der Ort, an dem Probleme endlich gestanden werden. Lernen Sie diese gut und Sie werden sich auf jedem Server wie zu Hause fühlen.

Desly