Linux: Befehle in den Hintergrund versetzen

29.04.2011

Befehle, die man in einem Terminal ausführt, blockieren die Eingabe des Terminals bis zur Beendigung des Befehls. Das ist ja normal und gut so.

Manchmal möchte man das nicht. Dafür gibt es mehrere Möglichkeiten einen laufenden Prozess (in diesem Fall der Befehl) in den Hintergrund zu versetzen, so dass er ohne Bindung an das Terminal weiter läuft.

Beispiel: ich befinde mich über eine ssh-Verbindung auf einem entfernten Rechner und möchte sehr große Dateien auf eine dort angeschlossene externe Festplatte verschieben oder kopieren. Bei USB2 dauert das entsprechend lange. Der cp-Befehl läuft und ich möchte das losgelöst von der ssh-Session weiterlaufen lassen (so dass ich den Rechner, an dem ich sitze, ausschalten kann).

  1. Strg + z (Tastenkombination, auch Ctrl + z genannt)
    Damit wird der aktive Prozess angehalten (nicht beendet!) - die Kommandozeile steht wieder zur Eingabe zur Verfügung.
  2. Befehl:
    bg

    Damit wird der zu letzt aktive Prozess (also der gerade unterbrochene Befehl) in den Hintergrund versetzt. Er läuft dann weiter, ohne das Terminal zu belegen. Allerdings ist er noch gebunden an das Terminal. Wird es beendet bzw. der Nutzer logt sich aus, dann wird der Befehl abgebrochen.

  3. Befehl:
    disown

    Damit wird der zuletzt aktive Prozess komplett in den Hintergrund verschoben und läuft unabhängig vom Terminal und Nutzer weiter.

Wenn's mal wieder länger dauert…


zurück