<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Htop – Serverküche</title><link>https://serverkueche.de/tags/htop/</link><description>Htop – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/htop/index.xml" rel="self" type="application/rss+xml"/><item><title>Die wichtigsten Terminal-Befehle für deinen Server</title><link>https://serverkueche.de/tutorials/wichtigste-terminal-befehle/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/wichtigste-terminal-befehle/</guid><description>Der Werkzeugkasten fürs Server-Terminal: von htop, btop und ncdu fürs Debuggen bis tmux, rsync und dig für die tägliche Arbeit – mit echten Beispielen.</description><content:encoded><![CDATA[<p>Wer einen eigenen Server betreibt, lebt (zumindest zeitweise) im Terminal. Dieser Artikel ist dein
Werkzeugkasten: die Befehle, die du wirklich brauchst – einmal zum <strong>Debuggen</strong>, wenn der
Server plötzlich lahmt, und einmal für die <strong>tägliche Arbeit</strong>. Kein trockenes
Handbuch, sondern die Auswahl, die sich im Alltag bewährt hat.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Kein Setup diesmal, sondern eine <strong>praxiserprobte Referenz</strong>. Wir gehen zwei Werkzeugkästen
durch:</p>
<ol>
<li><strong>Performance debuggen</strong> – wenn der Server zäh wird: <code>top</code>, <code>htop</code>, <code>btop</code>, <code>ctop</code>,
<code>iotop</code>, <code>nload</code>, <code>ncdu</code> und <code>kill</code>. Damit findest du heraus, <em>was</em> die Ressourcen
frisst, und greifst ein.</li>
<li><strong>Tägliche Arbeit</strong> – die Befehle, die du ständig tippst: <code>ls</code>, <code>cd</code>, <code>nano</code>, <code>wget</code>,
<code>curl</code>, <code>dig</code>, <code>tmux</code>, <code>history</code>, <code>sudo</code>, <code>scp</code>, <code>rsync</code>, <code>dd</code> und <code>ssh-agent</code>.</li>
</ol>
<p>Alle Beispiele sind auf einem echten <strong>Debian 13</strong>-Server gelaufen; die gezeigten
Ausgaben sind real. Die interaktiven Vollbild-Werkzeuge (top, htop, btop, ctop, nload,
ncdu) zeigen wir dir zusätzlich im Bild, damit du die Oberfläche wiedererkennst – die
kopierbaren Einzelbefehle bleiben bewusst als Text zum Abtippen.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein Server, auf den du dich per SSH einloggen kannst – etwa aus
<a href="/tutorials/erste-schritte-netcup-vps/">Erste Schritte mit dem netcup-VPS</a>.</li>
<li>Ein Benutzer mit <code>sudo</code>-Rechten zum Installieren von Paketen.</li>
<li>Keine Angst vor der Kommandozeile – die legen wir hier gemeinsam ab.</li>
</ul>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-herb-400 bg-herb-50 dark:border-herb-700 dark:bg-herb-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🧑‍🍳</span>Erst installieren, dann nutzen
  </p>
  <div class="prose-kitchen text-sm"><p><code>top</code>, <code>kill</code>, <code>ls</code>, <code>curl</code>, <code>dig</code>, <code>scp</code>, <code>dd</code> und <code>ssh-agent</code> sind auf Debian meist schon
da. Die komfortableren Werkzeuge installierst du in einem Rutsch:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt update <span class="o">&amp;&amp;</span> sudo apt install -y htop btop iotop nload ncdu tmux rsync</span></span></code></pre></div>
</div>
<p><code>ctop</code> ist nicht in den Paketquellen – das holen wir uns im entsprechenden Abschnitt
direkt als fertige Datei.</p>
</div>
</div>
<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<p>Zuerst der Debugging-Werkzeugkasten – die Befehle für den Moment, in dem der Server
klemmt. Danach die Werkzeuge für die tägliche Arbeit.</p>
<h3 id="top-und-htop-der-erste-blick">top und htop: der erste Blick</h3>
<p><code>top</code> ist auf jedem Linux vorhanden und zeigt live die laufenden Prozesse, sortiert nach
CPU-Last. Für den schnellen Blick reicht es:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">top</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-top_hu_4809f616e06b7cb8.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-top_hu_1335ebccce922b20.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-top_hu_4809f616e06b7cb8.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-top_hu_4c40fc62fc61344d.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-top_hu_953e02ee8fa74fd.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="758"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-top_hu_e40d7531757b2c1.webp"
    alt="Die top-Ausgabe mit CPU-Zustandszeile, Speicherzeile und der nach CPU-Last sortierten Prozessliste" title="top: die %Cpu(s)-Zeile verrät, womit die CPU gerade beschäftigt ist"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">top: die %Cpu(s)-Zeile verrät, womit die CPU gerade beschäftigt ist</figcaption></figure></p>
<p>Oben siehst du Load-Average, Speicher und die Prozessliste. Die wichtigste – und
kryptischste – Zeile ist <strong><code>%Cpu(s)</code></strong>. Ihre acht Werte sagen dir, <em>womit</em> die CPU
beschäftigt ist:</p>
<ul>
<li><strong><code>us</code></strong> (user) – normale Programme im Userspace (deine Apps, Container-Prozesse).</li>
<li><strong><code>sy</code></strong> (system) – der Kernel selbst (Systemaufrufe, Treiber, Netzwerk-Stack).</li>
<li><strong><code>ni</code></strong> (nice) – Userspace-Prozesse mit herabgesetzter Priorität (per <code>nice</code> gestartet).</li>
<li><strong><code>id</code></strong> (idle) – Leerlauf. <strong>Hoher <code>id</code> = viel Luft nach oben</strong>, niedriger <code>id</code> = die CPU
ist ausgelastet.</li>
<li><strong><code>wa</code></strong> (io-wait) – die CPU <strong>wartet auf die Festplatte</strong>. Dauerhaft hoch heißt: dein
Flaschenhals ist die Disk, nicht die Rechenleistung (dann weiter mit <code>iotop</code>, siehe unten).</li>
<li><strong><code>hi</code></strong> (hardware interrupts) – Zeit für Hardware-Interrupts (Geräte melden sich).</li>
<li><strong><code>si</code></strong> (software interrupts) – Zeit für Software-Interrupts (oft Netzwerk-Verarbeitung).</li>
<li><strong><code>st</code></strong> (steal) – <strong>nur auf VPS/virtuellen Servern</strong>: Rechenzeit, die der Hypervisor
deiner VM „gestohlen&quot; hat, weil andere Gäste auf demselben Wirt liefen. Dauerhaft hoher
<code>st</code> heißt, der Wirt ist überbucht – ein Grund, den Tarif oder Anbieter zu hinterfragen.</li>
</ul>
<p>Mit <code>q</code> beendest du die Ansicht. <code>top</code> ist aber spartanisch – der Nachfolger <code>htop</code> ist
deutlich lesbarer: farbige Balken pro CPU-Kern, Maus-Bedienung und einfaches Sortieren.</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">htop</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-htop_hu_d9e4772c3c92bc7a.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-htop_hu_83a2ed0bf41e737a.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-htop_hu_d9e4772c3c92bc7a.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-htop_hu_8b21d29b4afcb7c3.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-htop_hu_f675f4223d58accb.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="462"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-htop_hu_b74118bcea1a6bb7.webp"
    alt="Das htop-Dashboard mit farbigen CPU- und Speicher-Balken und der Prozessliste" title="htop: farbige Auslastungs-Balken plus eine sortier- und durchsuchbare Prozessliste"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">htop: farbige Auslastungs-Balken plus eine sortier- und durchsuchbare Prozessliste</figcaption></figure></p>
<p>Achte oben auf die <strong>CPU-Balken</strong> (ein Balken je Kern) und den <strong>Mem</strong>-Balken. In der
Liste sortierst du mit <code>F6</code> nach einer Spalte (z. B. <code>%MEM</code>), suchst mit <code>F3</code> einen Prozess
und beendest ihn mit <code>F9</code>. Genau hier findest du den Dienst, der gerade alles ausbremst.</p>
<h3 id="btop-der-schicke-systemmonitor">btop: der schicke Systemmonitor</h3>
<p><code>btop</code> (Version 1.3.2 im Test) geht noch einen Schritt weiter: CPU, Arbeitsspeicher,
Festplatten-I/O und Netzwerk in einem hübschen, mausbedienbaren Dashboard – alles auf
einen Blick.</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">btop</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-btop_hu_939dc132b7e88178.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-btop_hu_9aee6dd6ef165c90.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-btop_hu_939dc132b7e88178.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-btop_hu_6650a3a99015791f.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-btop_hu_a4b760c923e1618a.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="378"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-btop_hu_e94da5d4550e8414.webp"
    alt="Das btop-Dashboard mit CPU-Auslastungsgraph, Speicher-, Festplatten- und Netzwerkanzeige sowie Prozessliste" title="btop: CPU-Graph, RAM, Disks, Netzwerk und Prozesse in einem Bild – hier drei Kerne unter Last"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">btop: CPU-Graph, RAM, Disks, Netzwerk und Prozesse in einem Bild – hier drei Kerne unter Last</figcaption></figure></p>
<p>Für den täglichen Gesundheits-Check ist <code>btop</code> unser Favorit, weil du Netzwerk und Disk
gleich mitsiehst und nicht mehrere Tools brauchst. Beenden mit <code>q</code> oder <code>Esc</code>.</p>
<h3 id="ctop-docker-container-live-überwachen">ctop: Docker-Container live überwachen</h3>
<p>Läuft dein Server mit Docker, willst du wissen, welcher <strong>Container</strong> wie viel zieht.
<code>htop</code> zeigt nur Prozesse – <code>ctop</code> zeigt Container. Es ist nicht in den Paketquellen,
also holen wir die fertige Datei (Version 0.7.7):</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo curl -L -o /usr/local/bin/ctop https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64
</span></span><span class="line"><span class="cl">sudo chmod +x /usr/local/bin/ctop</span></span></code></pre></div>
</div>
<p>Wir laden die Datei bewusst mit vollem Pfad und machen sie ausführbar – kein blindes
<code>curl … | bash</code>. Danach startest du es einfach:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ctop</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_f534ab25314cb648.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_131d335f81994847.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_f534ab25314cb648.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_df3d963f87473c17.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_5d36591f1273be2f.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="86"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-ctop_hu_bda915ba30010c5d.webp"
    alt="Die ctop-Übersicht mit einer Zeile je Container und Spalten für CPU, Speicher, Netzwerk und I/O" title="ctop: jeder Container eine Zeile – hier zieht „demo-busy“ 104 % CPU"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">ctop: jeder Container eine Zeile – hier zieht „demo-busy“ 104 % CPU</figcaption></figure></p>
<p>Du bekommst pro Container eine Zeile mit CPU, RAM, Netzwerk und Disk-I/O, live aktualisiert.
Mit Enter auf einem Container öffnest du ein Menü zum Stoppen, Neustarten oder Log-Anzeigen –
ideal, wenn ein einzelner Dienst Amok läuft.</p>
<h3 id="iotop-und-nload-festplatte-und-netzwerk">iotop und nload: Festplatte und Netzwerk</h3>
<p>Manchmal ist nicht die CPU das Problem, sondern die <strong>Festplatte</strong>. <code>iotop</code> zeigt, welcher
Prozess gerade liest und schreibt (braucht Root):</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo iotop</span></span></code></pre></div>
</div>
<p>Sortiert nach Schreib-/Leserate erkennst du sofort den I/O-Fresser – oft ein Backup, eine
Datenbank oder ein außer Kontrolle geratenes Log. Für das <strong>Netzwerk</strong> macht <code>nload</code>
dasselbe: eingehender und ausgehender Durchsatz in Echtzeit, mit kleinem Graph.</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">nload</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-nload_hu_36e8040aacbc1b3c.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-nload_hu_5a2a952957237444.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-nload_hu_36e8040aacbc1b3c.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-nload_hu_537efd90521ed53c.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-nload_hu_e15a01eaa91e433c.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="378"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-nload_hu_788b51bf7390e6d2.webp"
    alt="Die nload-Ansicht mit Balkengraphen für eingehenden und ausgehenden Netzwerkdurchsatz auf eth0" title="nload: eingehender (hier 1,98 GBit/s) und ausgehender Durchsatz je Interface, mit Live-Graph"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">nload: eingehender (hier 1,98 GBit/s) und ausgehender Durchsatz je Interface, mit Live-Graph</figcaption></figure></p>
<p>Mit den Pfeiltasten wechselst du zwischen den Netzwerk-Interfaces (oder du gibst das
gewünschte direkt an, z. B. <code>nload eth0</code>). Praktisch, um zu prüfen,
ob gerade ein großer Upload läuft – oder ob unerwarteter Traffic den Anschluss verstopft.</p>
<h3 id="ncdu-den-speicherfresser-finden">ncdu: den Speicherfresser finden</h3>
<p>Die häufigste Ursache für einen kaputten Server ist eine <strong>volle Festplatte</strong>. Den groben
Überblick gibt <code>df</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">df -h /</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Filesystem      Size  Used Avail Use% Mounted on
</span></span><span class="line"><span class="cl">/dev/vda4       251G   11G  230G   5% /</span></span></code></pre></div>
</div>
<p><code>df</code> sagt dir <em>dass</em> es eng wird, aber nicht <em>wo</em>. Das erledigt <code>ncdu</code> – ein interaktiver
Verzeichnis-Analyzer, der dir zeigt, welche Ordner den Platz belegen:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ncdu /</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_c500db131512f21a.webp" srcset="/tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_5f2baf134af0eead.webp 480w, /tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_c500db131512f21a.webp 768w, /tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_bfd5160972b38684.webp 1200w, /tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_1b0563a1c785d7f5.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="378"
    data-full="/tutorials/wichtigste-terminal-befehle/terminal-ncdu_hu_7c791fd9b0c1fef9.webp"
    alt="Die ncdu-Ansicht mit den größten Verzeichnissen unter /usr, jeweils mit Balken und Größe" title="ncdu: die größten Verzeichnisse oben, mit Balken sortiert – hier ein Scan von /usr"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">ncdu: die größten Verzeichnisse oben, mit Balken sortiert – hier ein Scan von /usr</figcaption></figure></p>
<p><code>ncdu</code> scannt und listet die größten Verzeichnisse oben. Mit den Pfeiltasten navigierst du
hinein, mit <code>d</code> löschst du gezielt (Vorsicht!). So findest du in Sekunden das riesige
Log-File oder den vergessenen Backup-Ordner.</p>
<h3 id="kill-hängende-prozesse-beenden">kill: hängende Prozesse beenden</h3>
<p>Hast du in <code>htop</code> oder <code>top</code> die <strong>PID</strong> (Prozess-ID) des Übeltäters gefunden, beendest du
ihn mit <code>kill</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">kill</span> <span class="m">12345</span></span></span></code></pre></div>
</div>
<p>Das schickt ein höfliches „bitte beenden&quot; (Signal <code>TERM</code>), das dem Prozess erlaubt,
sauber aufzuräumen. Reagiert er nicht, folgt die harte Variante:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">kill</span> -9 <span class="m">12345</span></span></span></code></pre></div>
</div>
<p><code>-9</code> (Signal <code>KILL</code>) beendet sofort und gnadenlos. <strong>Nutze es erst als letzten Ausweg</strong> –
der Prozess kann dabei keine Daten mehr sichern. Kennst du nur den Namen, hilft <code>pkill nginx</code>,
das alle passenden Prozesse trifft.</p>
<p>Damit endet der Debugging-Kasten. Jetzt die Werkzeuge für die tägliche Arbeit.</p>
<h3 id="ls-cd-und-nano-navigieren-und-bearbeiten">ls, cd und nano: navigieren und bearbeiten</h3>
<p>Das Grundgerüst jeder Terminal-Sitzung. <code>cd</code> wechselt das Verzeichnis, <code>ls</code> listet den
Inhalt. Am nützlichsten ist <code>ls</code> mit Optionen:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ls -lh</span></span></code></pre></div>
</div>
<p><code>-l</code> zeigt Details (Rechte, Besitzer, Größe, Datum), <code>-h</code> macht die Größen lesbar (<code>4.0K</code>
statt <code>4096</code>). Mit <code>ls -la</code> siehst du auch versteckte Dateien (die mit <code>.</code> beginnen). Zum
Bearbeiten von Konfigurationsdateien ist <code>nano</code> der einsteigerfreundlichste Editor:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano /etc/hosts</span></span></code></pre></div>
</div>
<p>Unten stehen die Tastenkürzel: <code>Strg+O</code> speichert („WriteOut&quot;), <code>Strg+X</code> beendet. Kein
kryptisches vim – genau richtig, um schnell eine Zeile zu ändern.</p>
<h3 id="wget-curl-und-dig-daten-holen-und-netzwerk-prüfen">wget, curl und dig: Daten holen und Netzwerk prüfen</h3>
<p><code>wget</code> lädt Dateien herunter – ideal für Downloads:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">wget https://DEINE_QUELLE/datei.tar.gz</span></span></code></pre></div>
</div>
<p><code>curl</code> ist der Schweizer-Taschenmesser für HTTP. Besonders wertvoll: nur die <strong>Antwort-Header</strong>
ansehen, um zu prüfen, was ein Server zurückgibt:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -I https://example.com</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">HTTP/2 200
</span></span><span class="line"><span class="cl">date: Sat, 18 Jul 2026 09:55:49 GMT
</span></span><span class="line"><span class="cl">content-type: text/html
</span></span><span class="line"><span class="cl">server: cloudflare</span></span></code></pre></div>
</div>
<p>Der Status <code>200</code> heißt „alles ok&quot;, <code>301</code>/<code>302</code> sind Weiterleitungen, <code>404</code> „nicht
gefunden&quot;. Für DNS-Fragen ist <code>dig</code> das Werkzeug – etwa um zu prüfen, ob deine Domain auf
den richtigen Server zeigt:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dig +short example.com A</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">172.66.147.243
</span></span><span class="line"><span class="cl">104.20.23.154</span></span></code></pre></div>
</div>
<p><code>+short</code> liefert nur die reine Antwort (die IP-Adresse). Ohne den Schalter siehst du den
vollen Bericht inklusive Antwortzeit – unverzichtbar, bevor Traefik ein Zertifikat holen
kann (siehe <a href="/tutorials/domain-mit-server-verbinden/">Domain mit Server verbinden</a>).</p>
<h3 id="tmux-die-sitzung-die-nie-abbricht">tmux: die Sitzung, die nie abbricht</h3>
<p>Das wichtigste Werkzeug für Fernwartung. Startest du ein langes Kommando (Update, Backup,
Kompilieren) über SSH und deine Verbindung bricht ab, <strong>stirbt normalerweise auch dein
Prozess</strong>. <code>tmux</code> löst das: Es hält deine Sitzung auf dem Server am Leben, egal ob du
verbunden bist.</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tmux</span></span></code></pre></div>
</div>
<p>Du landest in einer tmux-Sitzung und arbeitest normal. Bricht die Verbindung ab (oder du
schließt bewusst mit <code>Strg+B</code>, dann <code>D</code> – „detach&quot;), läuft alles weiter. Beim nächsten
Login hängst du dich wieder dran:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tmux attach</span></span></code></pre></div>
</div>
<p>tmux kann noch viel mehr (geteilte Fenster, mehrere Panes). Die Tastenkürzel beginnen alle
mit dem „Prefix&quot; <code>Strg+B</code>. Eine kompakte Übersicht aller Kürzel findest du auf dem
<a href="https://tmuxcheatsheet.com/">tmux-Cheatsheet</a> – das lohnt sich zum Ausdrucken.</p>
<h3 id="scp-rsync-und-dd-kopieren-und-übertragen">scp, rsync und dd: kopieren und übertragen</h3>
<p><code>scp</code> kopiert Dateien über SSH – vom lokalen Rechner auf den Server und zurück:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">scp datei.txt DEIN_BENUTZER@DEINE_SERVER_IP:/opt/ziel/</span></span></code></pre></div>
</div>
<p>Für alles außer einzelnen Dateien ist <code>rsync</code> überlegen: Es überträgt nur <em>Änderungen</em>,
kann fortsetzen und synchronisiert ganze Verzeichnisbäume. Teste immer zuerst mit <code>-n</code>
(Trockenlauf), bevor du wirklich kopierst:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">rsync -avn /quelle/ /ziel/</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">sending incremental file list
</span></span><span class="line"><span class="cl">created directory /ziel
</span></span><span class="line"><span class="cl">./
</span></span><span class="line"><span class="cl">datei.txt
</span></span><span class="line"><span class="cl">sub/
</span></span><span class="line"><span class="cl">sub/mehr.txt
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sent 147 bytes  received 63 bytes  420.00 bytes/sec
</span></span><span class="line"><span class="cl">total size is 11  speedup is 0.05 (DRY RUN)</span></span></code></pre></div>
</div>
<p><code>-a</code> erhält Rechte und Zeitstempel, <code>-v</code> ist gesprächig, <code>-n</code> zeigt nur, <em>was passieren
würde</em>. Sieht es gut aus, lässt du das <code>-n</code> weg. <code>rsync</code> funktioniert auch über SSH
(<code>rsync -av /quelle/ user@server:/ziel/</code>) und ist damit das Rückgrat vieler Backup-Skripte.</p>
<p><code>dd</code> schließlich kopiert <strong>roh, Block für Block</strong> – etwa um ein Boot-Image auf einen
USB-Stick zu schreiben. Es ist mächtig und gnadenlos (dazu unten mehr):</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dd <span class="k">if</span><span class="o">=</span>image.iso <span class="nv">of</span><span class="o">=</span>/dev/sdX <span class="nv">bs</span><span class="o">=</span>4M <span class="nv">status</span><span class="o">=</span>progress</span></span></code></pre></div>
</div>
<h3 id="history-sudo-und-ssh-agent-die-kleinen-helfer">history, sudo und ssh-agent: die kleinen Helfer</h3>
<p><code>history</code> zeigt deine zuletzt getippten Befehle mit Nummer – praktisch, um einen langen
Befehl von gestern wiederzufinden:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">history</span> <span class="p">|</span> grep docker</span></span></code></pre></div>
</div>
<p>Mit <code>!123</code> führst du den Befehl mit Nummer 123 erneut aus, mit <code>Strg+R</code> suchst du
interaktiv rückwärts. <code>sudo</code> führt einen einzelnen Befehl mit Administratorrechten aus –
immer nur so viel Recht wie nötig:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl restart docker</span></span></code></pre></div>
</div>
<p><code>ssh-agent</code> schließlich merkt sich dein SSH-Schlüssel-Passwort für die Sitzung, damit du es
nicht bei jeder Verbindung neu eintippen musst:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">eval</span> <span class="s2">&#34;</span><span class="k">$(</span>ssh-agent -s<span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">ssh-add ~/.ssh/id_ed25519</span></span></code></pre></div>
</div>
<p>Danach loggst du dich ein, ohne die Passphrase erneut einzugeben – bis du dich abmeldest.
Mehr zu sicheren SSH-Schlüsseln steht in <a href="/tutorials/ssh-absichern/">SSH absichern</a>.</p>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<p><strong>Symptom:</strong> <code>dd</code> hat die falsche Festplatte überschrieben – Daten weg.</p>
<p><strong>Ursache &amp; Lösung:</strong> <code>dd</code> fragt nicht nach und heißt nicht umsonst spöttisch „disk
destroyer&quot;. Prüfe das Ziel (<code>of=</code>) <strong>immer</strong> vorher mit <code>lsblk</code>, und verwechsle nie <code>sda</code>
mit <code>sdb</code>. Es gibt kein Rückgängig – im Zweifel lieber dreimal lesen.</p>
<p><strong>Symptom:</strong> <code>kill -9</code> hat einen Dienst beendet, aber die Datenbank ist danach beschädigt.</p>
<p><strong>Ursache &amp; Lösung:</strong> <code>-9</code> gibt dem Prozess keine Chance, sauber zu schließen. Nutze immer
zuerst <code>kill</code> ohne <code>-9</code> und gib dem Prozess ein paar Sekunden. Erst wenn er wirklich hängt,
folgt die harte Variante.</p>
<p><strong>Symptom:</strong> <code>rsync</code> hat viel mehr kopiert (oder gelöscht) als erwartet.</p>
<p><strong>Ursache &amp; Lösung:</strong> Der <strong>abschließende Schrägstrich</strong> entscheidet: <code>rsync -a /quelle/</code>
kopiert den <em>Inhalt</em> von <code>quelle</code>, <code>rsync -a /quelle</code> kopiert den <em>Ordner</em> mit hinein.
Und <code>--delete</code> löscht im Ziel alles, was in der Quelle fehlt. Erst mit <code>-n</code> testen, immer.</p>
<p><strong>Symptom:</strong> Ein Werkzeug meldet „command not found&quot;.</p>
<p><strong>Ursache &amp; Lösung:</strong> Das Paket ist nicht installiert. Installiere es (siehe Tipp-Box oben)
oder prüfe den Namen. Manche Tools wie <code>iotop</code> brauchen zudem <code>sudo</code>, um überhaupt Daten zu
sehen.</p>
<p><strong>Symptom:</strong> Nach <code>tmux</code> ist bei erneutem Login „alles weg&quot;.</p>
<p><strong>Ursache &amp; Lösung:</strong> Du hast eine <em>neue</em> Sitzung gestartet statt dich anzuhängen. <code>tmux ls</code>
listet laufende Sitzungen, <code>tmux attach -t 0</code> hängt dich an die erste. Nur <code>tmux</code> allein
erzeugt jedes Mal eine frische.</p>
<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<ul>
<li><strong>Diese Befehle sind dein Backup-Werkzeug.</strong> <code>rsync</code>, <code>scp</code> und <code>dd</code> sind das Fundament
jeder Sicherungsstrategie. Für echte, verschlüsselte Off-Site-Backups baust du darauf auf –
siehe <a href="/tutorials/backups-mit-restic/">Backups mit Restic</a>, das intern die gleiche Logik
nutzt.</li>
<li><strong>Hilf dir selbst.</strong> Jeder Befehl bringt seine Doku mit: <code>man rsync</code> öffnet das Handbuch,
<code>rsync --help</code> zeigt die Optionen kompakt. Für knappe Praxisbeispiele lohnt sich das
Paket <code>tldr</code> (<code>sudo apt install tldr</code>), das statt seitenlanger man-Pages die drei, vier
häufigsten Anwendungsfälle zeigt.</li>
<li><strong>Bleib aktuell.</strong> Halte die Werkzeuge über <code>sudo apt update &amp;&amp; sudo apt upgrade</code> frisch;
<code>ctop</code> aktualisierst du, indem du die neue Release-Datei erneut herunterlädst. Die
Versionen sind bewusst genannt (Stand des Tests) – neuere funktionieren in aller Regel
genauso.</li>
<li><strong>Ehrlich zum Aufwand:</strong> Diese Referenz musst du nicht auswendig lernen. Leg sie als
Lesezeichen ab und komm wieder, wenn der Server klemmt. Nach ein paar Wochen sitzen die
wichtigsten Handgriffe von allein.</li>
</ul>
]]></content:encoded></item></channel></rss>