Die Linux-Befehle, die ich jeden Tag benutze
Die kurze Liste, die die meisten meiner Fehlerbehebungen abdeckt, plus ein Cheat-Sheet.
Die kurze Liste, die die meisten meiner Fehlerbehebungen abdeckt, plus ein Cheat-Sheet.

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.
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
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.
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.
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.
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.
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.
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 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