Spickzettel

Linux-Befehle: Spickzettel für Einsteiger und Administratoren

Aktualisiert: · Skillaria.Top

Die wichtigsten Linux-Befehle gliedern sich in Gruppen: Navigation (pwd, ls, cd), Dateiarbeit (cp, mv, rm, mkdir), Rechte (chmod, chown), Pakete (apt), Prozesse (ps, top, kill), Suche und Textverarbeitung (find, grep, sed, awk), Netzwerk (ip, ss, curl) und Dienste (systemctl, journalctl). Unten finden Sie Tabellen mit Befehlen und Beispielen, die den Großteil der Arbeit im Terminal abdecken.

Dieser Spickzettel zu Linux-Befehlen ist nach Aufgaben gegliedert: eine Datei finden, ein Paket installieren, einen hängenden Prozess beenden, eine Zeile aus einem Log herausziehen, einen Port prüfen. Die Befehle sind auf Ubuntu und Debian getestet; fast alles funktioniert auch auf anderen Distributionen, der Unterschied liegt vor allem beim Paketmanager.

Hilfe und Hinweise

BefehlWas er tut
man lsvollständiges Handbuch zum Befehl; Beenden mit q, Suche mit /Wort
ls --helpkurze Übersicht der Optionen
type cdwas es ist: eingebauter Befehl, Alias oder Datei
which python3Pfad zur ausführbaren Datei
historyBefehlsverlauf; !123 wiederholt Befehl Nummer 123
Strg+RSuche im Verlauf
Strg+C / Strg+DBefehl abbrechen / Shell schließen

Im Dateisystem navigieren

BefehlWas er tut
pwdaktuelles Verzeichnis
ls -laalle Dateien, auch versteckte, mit Rechten und Größen
ls -lhGrößen in lesbarer Form (K, M, G)
ls -ltSortierung nach Änderungszeit
cd /var/login einen absoluten Pfad wechseln
cd .. / cd ~ / cd -eine Ebene nach oben / ins Home-Verzeichnis / ins vorherige Verzeichnis
tree -L 2Verzeichnisbaum mit zwei Ebenen (Paket tree)

Arbeiten mit Dateien und Verzeichnissen

BefehlWas er tut
touch datei.txtleere Datei anlegen oder Änderungszeit aktualisieren
mkdir -p a/b/cVerzeichnisse samt übergeordneten anlegen
cp datei.txt sicherung.txtDatei kopieren
cp -r quelle/ ziel/Verzeichnis rekursiv kopieren
mv alt.txt neu.txtumbenennen oder verschieben
rm datei.txtDatei löschen (ohne Papierkorb)
rm -r verzeichnis/Verzeichnis mit Inhalt löschen; -f — ohne Nachfrage, vorsichtig
rmdir verzeichnisleeres Verzeichnis löschen
ln -s /opt/app/current appsymbolischer Link
stat datei.txtDetails: Größe, Rechte, Inode, Zeitstempel
file bild.binDateityp anhand des Inhalts bestimmen

Inhalte ansehen

BefehlWas er tut
cat dateiganze Datei ausgeben
less dateiseitenweise anzeigen, Suche mit /, Beenden mit q
head -n 20 dateidie ersten 20 Zeilen
tail -n 50 dateidie letzten 50 Zeilen
tail -f /var/log/syslogeine Datei in Echtzeit verfolgen
wc -l dateiAnzahl der Zeilen
diff a.conf b.confUnterschiede zwischen Dateien

Rechte und Besitzer

BefehlWas er tut
chmod +x skript.shAusführung erlauben
chmod 644 dateirw-r--r--: Besitzer schreibt, alle anderen lesen
chmod 755 verzeichnisrwxr-xr-x: typisch für Verzeichnisse und Skripte
chmod 600 ~/.ssh/id_ed25519nur der Besitzer: für private Schlüssel
sudo chown www-data:www-data dateiBesitzer und Gruppe ändern
sudo chown -R alice /srv/appBesitzer rekursiv ändern
idIhre UID, GID und Gruppen
sudo -iRoot-Shell
sudo usermod -aG docker aliceBenutzer einer Gruppe hinzufügen

Pakete (apt, Debian und Ubuntu)

BefehlWas er tut
sudo apt updatePaketlisten aus den Repositorys aktualisieren
sudo apt upgradeinstallierte Pakete aktualisieren
sudo apt install nginxPaket installieren
sudo apt remove nginxentfernen, Konfigurationsdateien bleiben; purge — mit Konfiguration
sudo apt autoremovenicht mehr benötigte Abhängigkeiten entfernen
apt search htopPaket suchen
apt show nginxBeschreibung und Version
dpkg -l | grep nginxprüfen, ob ein Paket installiert ist
dpkg -L nginxwelche Dateien das Paket installiert hat

Auf RHEL, Fedora und Rocky Linux entsprechen dem dnf install, dnf remove, dnf upgrade und rpm -qa.

Umgebung und Profil

BefehlWas er tut
echo $PATHwo die Shell nach Programmen sucht
envalle Umgebungsvariablen
export APP_ENV=prodVariable für die aktuelle Sitzung und Kindprozesse setzen
alias ll='ls -la'Abkürzung für einen Befehl
source ~/.bashrcProfil neu einlesen, ohne sich abzumelden
crontab -e / crontab -lcron-Aufgaben bearbeiten / anzeigen

Prozesse

BefehlWas er tut
ps auxalle Prozesse mit Benutzer, CPU und Speicher
ps aux | grep nginxeinen Prozess finden
pgrep -a nginxPID und Befehlszeile anhand des Namens
top / htopAuslastung in Echtzeit
kill 1234den Prozess um Beendigung bitten (SIGTERM)
kill -9 1234erzwungen beenden (SIGKILL) — letzter Ausweg
pkill -f "python app.py"Beenden anhand eines Treffers in der Befehlszeile
befehl &, jobs, fgStart im Hintergrund und Verwaltung der Aufgaben
nohup ./job.sh &der Prozess übersteht das Schließen des Terminals
free -hSpeicher und Swap
uptimeLaufzeit und mittlere Last
strace -p 1234Systemaufrufe eines Prozesses

Dienste und Logs (systemd)

BefehlWas er tut
systemctl status nginxZustand des Dienstes und die letzten Log-Zeilen
sudo systemctl start|stop|restart nginxstarten, stoppen, neu starten
sudo systemctl reload nginxKonfiguration neu einlesen, ohne zu stoppen
sudo systemctl enable --now nginxAutostart aktivieren und sofort starten
systemctl --failedfehlgeschlagene Units
journalctl -u nginx -fDienst-Log in Echtzeit
journalctl -u nginx --since "1 hour ago"Log der letzten Stunde
journalctl -p err -bFehler seit dem letzten Systemstart

Dateien finden

BefehlWas er tut
find /var/log -name "*.log"nach Namen suchen
find . -type f -mtime -1Dateien, die am letzten Tag geändert wurden
find / -size +500M 2>/dev/nullgroße Dateien, Zugriffsfehler ausgeblendet
find . -name "*.tmp" -deletesuchen und löschen
du -sh *Größe jedes Eintrags im Verzeichnis
df -hfreier Speicher auf den Dateisystemen

Text suchen und verarbeiten: grep, sed, awk, jq

BefehlWas er tut
grep "error" app.logZeilen mit dem Wort
grep -i -n "error" app.logohne Beachtung der Groß-/Kleinschreibung, mit Zeilennummern
grep -r "listen" /etc/nginx/rekursiv durch ein Verzeichnis
grep -v "DEBUG" app.logZeilen, in denen das Wort fehlt
grep -c "500" access.logAnzahl der Treffer
grep -E "warn|error" app.logerweiterte reguläre Ausdrücke
sed 's/alt/neu/g' dateiersetzen und das Ergebnis ausgeben
sed -i 's/8080/9090/' app.confdirekt in der Datei ersetzen
sed -n '10,20p' dateiZeilen 10–20 ausgeben
awk '{print $1}' access.logdas erste Feld jeder Zeile
awk -F: '{print $1}' /etc/passwdBenutzernamen (Trennzeichen :)
awk '$9 == 500' access.logZeilen, in denen das neunte Feld 500 ist
sort | uniq -c | sort -rnWiederholungen zählen und nach Häufigkeit sortieren
cut -d, -f2 daten.csvdie zweite Spalte einer CSV-Datei
jq '.items[].name' daten.jsonFelder aus JSON extrahieren

Beispiel für eine Pipeline: die zehn IP-Adressen mit den meisten Anfragen an nginx.

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

Umleitung und Pipelines

KonstruktWas er tut
befehl > ausgabe.txtAusgabe in eine Datei schreiben (überschreiben)
befehl >> ausgabe.txtans Ende der Datei anhängen
befehl 2> fehler.txtFehler umleiten
befehl > alles.log 2>&1Ausgabe und Fehler in eine Datei
befehl1 | befehl2Ausgabe des einen Befehls als Eingabe des anderen
befehl | tee ausgabe.txtauf dem Bildschirm zeigen und speichern
befehl1 && befehl2den zweiten nur ausführen, wenn der erste erfolgreich war
befehl1 || befehl2den zweiten ausführen, wenn der erste fehlgeschlagen ist

Archive

BefehlWas er tut
tar -czf backup.tar.gz verzeichnis/packen und mit gzip komprimieren
tar -xzf backup.tar.gzentpacken
tar -tzf backup.tar.gzInhalt anzeigen
zip -r seite.zip seite/ / unzip seite.zipzip-Archive

Netzwerk

BefehlWas er tut
ip aSchnittstellen und IP-Adressen
ip rRouting-Tabelle
ping -c 4 8.8.8.8Erreichbarkeit eines Hosts
ss -tulpnoffene Ports und die Prozesse dahinter
dig example.com / nslookup example.comDNS-Abfrage
curl -I https://example.comnur die Antwort-Header
curl -s https://api.example.com | jqAPI-Anfrage mit formatiertem JSON
wget URLDatei herunterladen
traceroute example.comWeg der Pakete zum Host
ssh benutzer@hostmit einem Server verbinden
ssh-keygen -t ed25519SSH-Schlüsselpaar erzeugen
scp datei benutzer@host:/tmp/Datei auf den Server kopieren
rsync -avz verzeichnis/ benutzer@host:/srv/verzeichnis/ein Verzeichnis synchronisieren
sudo ufw statusFirewall-Regeln

System und Festplatten

BefehlWas er tut
uname -aKernel und Architektur
cat /etc/os-releaseDistribution und Version
hostnamectlHostname und Systeminformationen
lsblkFestplatten und Partitionen
sudo mount /dev/sdb1 /mnteine Partition einhängen
who / wwer gerade angemeldet ist
sudo reboot / sudo shutdown -h nowNeustart / Herunterfahren

Fazit

Für die tägliche Arbeit reichen ein paar Dutzend Befehle: ls, cd, cp, mv, rm, chmod, sudo, apt, ps, kill, systemctl, journalctl, grep, find, ss, curl und ssh. Bewahren Sie diesen Spickzettel auf und sehen Sie hinein, bis die Befehle in Fleisch und Blut übergehen. Alle Befehlsgruppen behandelt unser Linux-Kurs praxisnah.

Häufige Fragen

Wie beende ich man oder less?

Drücken Sie q. Für die Suche tippen Sie einen Schrägstrich und das Wort ein; mit n springen Sie zum nächsten Treffer.

Wie beende ich den Editor vim?

Drücken Sie Esc, tippen Sie dann :q! und Enter, um ohne Speichern zu beenden, oder :wq, um zu speichern und zu beenden. Einsteiger bearbeiten Dateien oft einfacher mit nano.

Warum ist rm -rf gefährlich?

Der Befehl löscht ohne Rückfrage und ohne Papierkorb, und ein Fehler im Pfad (etwa ein überflüssiges Leerzeichen vor dem Sternchen) kann das falsche Verzeichnis entfernen. Prüfen Sie den Pfad vorher mit ls.

Wie wiederhole ich den letzten Befehl mit sudo?

Tippen Sie sudo !! — die Shell setzt den vorherigen Befehl vollständig ein.

Wie stoppe ich einen hängenden Befehl im Terminal?

Strg+C sendet ein Unterbrechungssignal. Reagiert der Befehl nicht, finden Sie seine PID mit ps oder pgrep in einem anderen Terminal und beenden ihn mit kill.