WMP Sites

Linux-Befehle im Hintergrund ausführen: Eine umfassende Anleitung

Lukas Fuchs vor 2 Jahren DevOps & Deployment 3 Min. Lesezeit

Vorteile der Ausführung von Befehlen im Hintergrund

Die Ausführung von Befehlen im Hintergrund bietet dir zahlreiche Vorteile, die dein Arbeitsleben unter Linux vereinfachen können:

Kontinuierliche Ausführung von Aufgaben

Indem du Befehle im Hintergrund ausführst, kannst du verhindern, dass wichtige Aufgaben unterbrochen werden, auch wenn du dich aus der Shell abmeldest oder dein Terminal schließt. Dies ist besonders nützlich für zeitaufwändige Prozesse wie Dateikopieroperationen oder Systemupdates.

Freisetzung der Terminalschnittstelle

Wenn du Befehle im Hintergrund ausführst, wird die Terminalschnittstelle freigegeben, sodass du andere Befehle oder Aufgaben ausführen kannst, während der Hintergrundprozess weiterläuft. Dies ermöglicht dir ein effizienteres Multitasking und verhindert, dass du auf lange Eingabeaufforderungen warten musst.

Automatisierung von Aufgaben

Du kannst die Ausführung von Befehlen im Hintergrund automatisieren, indem du Skripte oder Cronjobs erstellst. Dies ermöglicht dir, Routinevorgänge zu planen und auszuführen, ohne manuell eingreifen zu müssen.

Überwachung des Systemstatus

Durch die Ausführung von Befehlen zur Überwachung des Systemstatus im Hintergrund kannst du potenzielle Probleme frühzeitig erkennen und darauf reagieren. Dies kann bei der Fehlerbehebung und Wartung deines Systems hilfreich sein.

Trennung von der Shell

Wenn du Befehle im Hintergrund ausführst, werden sie von der Shell getrennt. Dies kann nützlich sein, um zu verhindern, dass der Ausführung des Befehls durch Signale beendet wird, die an die Shell gesendet werden.

So führen Sie Befehle im Hintergrund aus

Im Hintergrund ausgeführte Befehle ermöglichen es dir, deine Arbeit an der Shell fortzusetzen, während Befehle im Hintergrund ausgeführt werden. Dies ist besonders nützlich für zeitaufwändige Aufgaben, die deine Eingabeaufforderungen nicht blockieren sollen.

Verwendung von & zum Ausführen von Befehlen im Hintergrund

Die einfachste Möglichkeit, einen Befehl im Hintergrund auszuführen, ist die Verwendung des &-Operators. Führe beispielsweise den folgenden Befehl aus, um den Befehl sleep für 10 Sekunden im Hintergrund auszuführen:

sleep 10 &

Dadurch wird der Befehl sleep in einem neuen Prozess ausgeführt, und die Shell kehrt zur Eingabeaufforderung zurück.

Verwendung von nohup zum Ausführen von Befehlen im Hintergrund

Der Befehl nohup wird verwendet, um Befehle im Hintergrund auszuführen, auch wenn du dich vom Terminal abmeldest. Dies ist nützlich für Aufgaben, die für längere Zeit laufen sollen. Führe den folgenden Befehl aus, um sleep 10 Sekunden lang mit nohup im Hintergrund auszuführen:

nohup sleep 10 &

Verwendung von disown zum Beenden der Zuordnung zwischen einem Prozess und der Shell

Manchmal möchtest du möglicherweise die Zuordnung zwischen einem im Hintergrund ausgeführten Prozess und der Shell beenden. Dies kann beispielsweise erforderlich sein, wenn du die Ausgabe des Prozesses nicht mehr benötigst. Verwende den Befehl disown mit der Prozess-ID (PID) des Prozesses, um die Zuordnung aufzuheben:

disown -a

Dadurch werden alle Prozesse von der Shell getrennt.

Verwendung von & zum Ausführen von Befehlen im Hintergrund

Eine der einfachsten Möglichkeiten, Befehle im Hintergrund auszuführen, ist die Verwendung des Ampersands (&) am Ende des Befehls. Wenn du einen Befehl mit & ausführst, wird er in einem separaten Prozess gestartet und die Shell kehrt zur Eingabeaufforderung zurück. Der Befehl läuft im Hintergrund weiter, während du andere Aufgaben erledigst.

Vorteile der Verwendung von &

  • Freie Eingabeaufforderung: Die Verwendung von & ermöglicht es dir, die Eingabeaufforderung freizugeben und sofort neue Befehle auszuführen.
  • Mehr Aufgabenverarbeitung: Du kannst mehrere Befehle gleichzeitig im Hintergrund ausführen, was die Effizienz steigert.
  • Unterbrechungsfreie Prozesse: Im Hintergrund ausgeführte Prozesse werden durch die Eingabeaufforderung nicht unterbrochen.

Syntax

Um einen Befehl mit & im Hintergrund auszuführen, verwende folgende Syntax:

befehlname &

Beispiel:

Um den Befehl sleep 60 im Hintergrund auszuführen, der 60 Sekunden wartet, verwende:

sleep 60 &

Zusätzliche Hinweise

  • Der im Hintergrund ausgeführte Prozess erhält eine Prozess-ID (PID), die du mit dem Befehl ps anzeigen kannst.
  • Die Ausgabe des im Hintergrund ausgeführten Befehls wird nicht auf der Standardausgabe angezeigt. Du kannst sie mit dem Befehl cat oder tail abrufen.
  • Im Hintergrund ausgeführte Befehle werden automatisch beendet, wenn du dich von der Shell abmeldest oder sie schließt.

Verwendung von nohup zum Ausführen von Befehlen im Hintergrund

Was ist nohup?

nohup (no hangup) ist ein Befehlszeilentool, das Befehle auch dann im Hintergrund ausführt, wenn die Verbindung zur Shell getrennt wird. Dies ist besonders nützlich für Befehle, die lange dauern oder die nicht mit der aktuellen Shell-Sitzung verbunden sein müssen.

Wie funktioniert nohup?

Wenn du nohup vor einem Befehl verwendest, startet nohup den Befehl in einem neuen Prozess und trennt seine Eingabe- und Ausgabestreams von der Shell. Dies ermöglicht es dem Befehl, auch dann weiterzulaufen, wenn die Shell geschlossen wird oder die Verbindung getrennt wird.

Verwendung von nohup

Um einen Befehl mit nohup im Hintergrund auszuführen, gib einfach Folgendes ein:

nohup <Befehl> &

Beispiel:

nohup sleep 600 &

Dieser Befehl führt den Befehl sleep 600 (der 10 Minuten schläft) im Hintergrund aus. Du kannst deine Shell schließen oder die Verbindung trennen und der Befehl wird trotzdem weiterlaufen.

Ausgabeumleitung

Wenn du die Ausgabe des Befehls in eine Datei umleiten möchtest, kannst du den Operator > verwenden:

nohup <Befehl> > <Dateiname> &

Beispiel:

nohup sleep 600 > ~/output.txt &

Dieser Befehl führt den Befehl sleep 600 im Hintergrund aus und leitet die Ausgabe in die Datei ~/output.txt um.

Fehlerumleitung

Um Fehlermeldungen des Befehls in eine Datei umzuleiten, kannst du den Operator 2> verwenden:

nohup <Befehl> 2> <Dateiname> &

Beispiel:

nohup sleep 600 2> ~/error.txt &

Dieser Befehl führt den Befehl sleep 600 im Hintergrund aus und leitet Fehlermeldungen in die Datei ~/error.txt um.

Vorteile von nohup

  • Stabilität: Befehle, die mit nohup ausgeführt werden, laufen weiter, auch wenn die Shell geschlossen wird oder die Verbindung getrennt wird.
  • Automatisierung: Du kannst Befehle planen und sie im Hintergrund ausführen, ohne dass du manuell eingreifen musst.
  • Fehlertoleranz: Befehle, die mit nohup ausgeführt werden, können Fehlermeldungen in eine Datei umleiten, was die Problembehandlung erleichtert.

Verwendung von disown zum Beenden der Zuordnung zwischen einem Prozess und der Shell

In bestimmten Fällen musst du möglicherweise die Zuordnung zwischen einem im Hintergrund ausgeführten Prozess und der Shell aufheben. Dies kann nützlich sein, wenn der Hintergrundprozess unabhängig von der Shell weiterlaufen soll, selbst wenn du die Shell schließt oder dich vom System abmeldest.

Das Kommando disown ermöglicht dir, die Zuordnung zwischen einem Prozess und der aktuellen Shell aufzuheben. Es nimmt einen oder mehrere Prozess-IDs oder Jobnummern als Argumente an, für die du die Zuordnung aufheben möchtest.

Syntax

disown [-a | -h | -r] [Job-Nr. | Prozess-ID]

Optionen

  • -a: Hebt die Zuordnung zu allen im Hintergrund ausgeführten Jobs auf.
  • -h: Hebt die Zuordnung zum Job mit der angegebenen Jobnummer auf.
  • -r: Hebt die Zuordnung zum Prozess mit der angegebenen Prozess-ID auf.

Beispiel

Angenommen, du hast das Kommando sleep 300 im Hintergrund ausgeführt und möchtest die Zuordnung zum Prozess aufheben:

disown -r 12345

Dadurch wird der Prozess mit der ID 12345 von der Shell disowned und kann unabhängig weiterlaufen.

Vorteile der Verwendung von disown

Die Verwendung von disown bietet mehrere Vorteile:

  • Unabhängige Ausführung von Prozessen: Prozesse, die von der Shell disowned wurden, können unabhängig von der Shell weiterlaufen, auch wenn du dich abmeldest oder die Shell schließt.
  • Vermeidung von Orphan-Prozessen: Wenn du die Shell schließt, ohne die Zuordnung zu im Hintergrund ausgeführten Prozessen aufzuheben, werden sie zu Orphan-Prozessen. Diese Prozesse können unerwünschte Ressourcen verbrauchen und die Systemleistung beeinträchtigen.
  • Verbesserte Fehlerbehandlung: Wenn ein disowned Prozess beendet wird, erhältst du keine Benachrichtigung über den Status. Dies kann hilfreich sein, um die Shell nicht mit Meldungen zu überladen, die nicht relevant sind.

Überwachung von im Hintergrund ausgeführten Befehlen

Sobald du Befehle im Hintergrund ausführst, ist es wichtig, sie zu überwachen, um sicherzustellen, dass sie wie erwartet ausgeführt werden. Hier sind einige Möglichkeiten, wie du dies tun kannst:

Verwendung von jobs

Der Befehl jobs listet alle im Hintergrund ausgeführten Jobs auf, zusammen mit ihrer Jobnummer. Du kannst die Jobnummer verwenden, um weitere Aktionen für den Job auszuführen.

$ jobs
[1]  Running                 sleep 100 &
[2]+  Running                 top &
[3]  Stopped                 vim test.txt &

Verwendung von fg und bg

Die Befehle fg und bg können verwendet werden, um einen im Hintergrund ausgeführten Job in den Vordergrund bzw. in den Hintergrund zu bringen.

$ fg %1  # Job 1 in den Vordergrund bringen
$ bg %2  # Job 2 in den Hintergrund bringen

Verwendung des Befehlsstatus

Der Befehl status kann verwendet werden, um den Status eines bestimmten Jobs abzurufen.

$ status %1
Job 1 is running (sleep 100)

Überwachen der Ausgabe von Befehlen

Du kannst die Ausgabe von im Hintergrund ausgeführten Befehlen mit dem Befehl tail überwachen.

$ tail -f /var/log/messages

Best Practices

  • Verwende beschreibende Namen für deine Jobs, damit du sie leichter identifizieren kannst.
  • Überwache deine Jobs regelmäßig, um sicherzustellen, dass sie wie erwartet ausgeführt werden.
  • Verwende den Befehl disown, um die Zuordnung zwischen einem Job und deiner Shell zu beenden, wenn du ihn nicht mehr überwachen möchtest.

Abrufen der Ausgabe von im Hintergrund ausgeführten Befehlen

Nachdem du einen Befehl im Hintergrund ausgeführt hast, möchtest du möglicherweise auf seine Ausgabe zugreifen. Hier sind einige Möglichkeiten, dies zu tun:

tail-Befehl

Der tail-Befehl ermöglicht es dir, die letzten Zeilen einer Datei anzuzeigen. Du kannst ihn verwenden, um die Ausgabe eines im Hintergrund ausgeführten Befehls in Echtzeit zu überwachen:

tail -f logdatei.txt

journalctl-Befehl (systemd)

Wenn du systemd auf deinem Linux-System verwendest, kannst du den journalctl-Befehl verwenden, um die Protokolle und die Ausgabe von im Hintergrund ausgeführten Systemdiensten und -programmen anzuzeigen:

journalctl -u dienstname

Ausgabeumleitung

Du kannst auch die Ausgabeumleitung verwenden, um die Ausgabe eines im Hintergrund ausgeführten Befehls in eine Datei umzuleiten. Dies ist nützlich, wenn du die Ausgabe später überprüfen möchtest:

befehl &> ausgabedatei.txt

script-Befehl

Der script-Befehl zeichnet alle Eingaben und Ausgaben deiner Shell-Sitzung in einer Datei auf. Du kannst ihn verwenden, um die Ausgabe eines im Hintergrund ausgeführten Befehls zu erfassen:

script -c 'befehl' ausgabedatei.txt

Wichtige Hinweise

  • Wenn du die Ausgabe eines im Hintergrund ausgeführten Befehls mit dem tail-Befehl in Echtzeit überwachst, wird die Ausgabe im Terminal angezeigt, sobald sie verfügbar ist.
  • Wenn du die Ausgabe in eine Datei umleitest, wird die Ausgabe erst in der Datei verfügbar sein, nachdem der Befehl abgeschlossen ist.
  • Wenn der im Hintergrund ausgeführte Befehl Fehler oder Warnungen ausgibt, werden diese möglicherweise nicht im Terminal angezeigt. Daher ist es wichtig, die Ausgabe zu überprüfen, um sicherzustellen, dass der Befehl wie erwartet ausgeführt wird.

Fehlerbehandlung bei im Hintergrund ausgeführten Befehlen

Eines der Hauptprobleme bei der Ausführung von Befehlen im Hintergrund ist die Fehlerbehandlung. Da diese Befehle nicht mehr an deine Shell gebunden sind, erhältst du möglicherweise keine Fehlermeldungen, wenn sie fehlschlagen. Um dies zu beheben, stehen dir mehrere Optionen zur Verfügung.

Verwendung von Fehlerausgabedateien

Eine Möglichkeit, Fehlermeldungen zu erfassen, ist die Verwendung von Fehlerausgabedateien. Mit der Option 2> kannst du die Fehlerausgabe eines Befehls in eine Datei umleiten.

$ Befehl 2> fehler.txt &

Dies leitet die Fehlerausgabe des Befehls in die Datei fehler.txt um. Du kannst sie dann später überprüfen, um zu sehen, ob der Befehl erfolgreich war.

Verwendung von Überwachungswerkzeugen

Es gibt auch Überwachungswerkzeuge, mit denen du im Hintergrund ausgeführte Befehle überwachen kannst. Ein Beispiel ist das Tool watch, mit dem du die Ausgabe eines Befehls in Echtzeit anzeigen kannst.

$ watch Befehl &

Dies führt den Befehl im Hintergrund aus und zeigt seine Ausgabe kontinuierlich an. Du kannst die Ausführung des Befehls beenden, indem du Ctrl+C drückst.

Behandlung von Fehlern in Skripten

Wenn du Befehle im Hintergrund in Skripten ausführst, ist es wichtig, Fehler zu behandeln. Du kannst dies mit der Option set -e tun, die dazu führt, dass das Skript bei einem Fehler beendet wird.

#!/bin/bash

# Skript mit Fehlerbehandlung
set -e

# Führe den Befehl im Hintergrund aus
Befehl &

Wenn der Befehl fehlschlägt, wird das Skript beendet und du erhälst eine Fehlermeldung.

Fazit

Die Fehlerbehandlung bei im Hintergrund ausgeführten Befehlen ist unerlässlich, um sicherzustellen, dass deine Befehle ordnungsgemäß ausgeführt werden. Durch die Verwendung von Fehlerausgabedateien, Überwachungswerkzeugen und Fehlerbehandlung in Skripten kannst du potenzielle Probleme rechtzeitig erkennen und beheben.

Best Practices für die Ausführung von Befehlen im Hintergrund

Beim Ausführen von Befehlen im Hintergrund gibt es einige Best Practices, die du befolgen solltest, um die Stabilität und Effizienz deines Systems zu gewährleisten:

Verwende geeignete Befehle

Nicht alle Befehle eignen sich für die Ausführung im Hintergrund. Befehle, die Interaktion mit der Shell erfordern, wie z. B. die Ausgabe von Eingaben oder die Aktualisierung von Shell-Variablen, sollten im Vordergrund ausgeführt werden.

Überwache die Ausführung

Überwache die Ausführung von im Hintergrund laufenden Befehlen regelmäßig, um sicherzustellen, dass sie ordnungsgemäß funktionieren. Verwende das jobs-Kommando, um den Status laufender Hintergrundprozesse anzuzeigen.

Behandle Fehler

Fehler, die in im Hintergrund ausgeführten Befehlen auftreten, werden möglicherweise nicht auf dem Bildschirm angezeigt. Richte Benachrichtigungen ein oder verwende Tools wie den logger-Befehl, um Fehlermeldungen an eine Datei oder einen Syslog-Server weiterzuleiten.

Verwende Befehlszeilentools

Nutze Befehlszeilentools wie screen oder tmux, um mehrere Sitzungen zu verwalten und Befehle im Hintergrund auszuführen, auch wenn die SSH-Verbindung unterbrochen wird.

Trenne Prozesse

Verwende das disown-Kommando, um die Zuordnung zwischen einem Prozess und der Shell aufzuheben. Dies verhindert, dass das Beenden der Shell auch den Hintergrundprozess beendet.

Lege Ausgabedateien fest

Wenn ein Befehl Ausgabe erzeugt, leite diese in eine Datei um, anstatt sie auf dem Bildschirm anzuzeigen. Dies hilft, die Konsole sauber zu halten und die Ausgaben für spätere Analysen verfügbar zu machen. Verwende die Umleitungsoperatoren > oder >> für diesen Zweck.

Vermeide übermäßige Hintergrundprozesse

Die Ausführung einer zu großen Anzahl von Befehlen im Hintergrund kann zu Systemverlangsamungen führen. Überwache die Ressourcennutzung und begrenze die Anzahl gleichzeitig ausgeführter Hintergrundprozesse.

Setze Ressourcenlimits

Verwende die Befehle ulimit und cgroups, um die Ressourcenlimits für Hintergrundprozesse festzulegen. Dies verhindert, dass ein einziger Prozess übermäßige Ressourcen verbraucht und das System beeinträchtigt.

Überprüfe die Shell-Skripte

Wenn du Shell-Skripte schreibst, die Befehle im Hintergrund ausführen, stelle sicher, dass die Skripte ordnungsgemäß geschrieben sind und Fehlerbehandlungsroutinen enthalten.

Weitere Beiträge

Folge uns

Neue Beiträge

Frontend

HTML Tabellen erstellen: Der umfassende Leitfaden zur Erstellung und Verwendung

AUTOR • Jul 04, 2026
Frontend

Das Element in HTML: Bedeutung, Verwendung und Best Practices für sauberen Code

AUTOR • Jul 04, 2026
API & Webservices

HTTP Statuscodes: ein umfassender Überblick für bessere Websites und weniger Fehler

AUTOR • Jul 04, 2026
Frontend

Form action beim Formularsenden verstehen und optimieren: So holst du mehr aus jedem Formular heraus

AUTOR • Jul 04, 2026
Frontend

Anleitung zum Erstellen einer HTML-Seite von Grund auf: So baue ich eine Website ohne Framework

AUTOR • Jul 04, 2026
API & Webservices

Statuscode 401 verstehen: Bedeutung von „Nicht autorisiert“ einfach erklärt

AUTOR • Jul 04, 2026
Frameworks & Libraries

React Bootstrap Tabs: So erstellen Sie benutzerfreundliche Registerkarten-Schnittstellen

AUTOR • Jul 04, 2026
Frontend

Kreise mit CSS erzeugen: Runde Elemente auf Ihrer Website schnell und sauber umsetzen

AUTOR • Jul 04, 2026
Frontend

So formatieren Sie HTML E-Mails: Der umfassende Leitfaden für saubere, klickstarke Newsletter

AUTOR • Jul 04, 2026
Frontend

HTML Cleaner: Das Werkzeug zur Optimierung und Verbesserung Ihres Website-Codes

AUTOR • Jul 04, 2026
Frontend

CSS Padding vs Margin: Der wesentliche Unterschied und warum er wichtig ist

AUTOR • Jul 04, 2026
Frontend

Vom Figma Prototyp zur Wirklichkeit: So konvertiere ich Figma Designs in HTML und CSS

AUTOR • Jul 04, 2026
Frontend

Div Container: Der ultimative Leitfaden zur Strukturierung von Webinhalten

AUTOR • Jul 04, 2026
Frontend

Gestalte die perfekte HTML Navigationsleiste für deine Website: Struktur, UX und SEO

AUTOR • Jul 04, 2026
API & Webservices

HTTP Statuscode 400: Alles, was Sie über Bad Request wissen müssen

AUTOR • Jul 04, 2026
Frontend

HTML in MP4 konvertieren: Schritt-für-Schritt-Anleitung für schnelle Ergebnisse

AUTOR • Jul 04, 2026
Frontend

HTML Links in einem neuen Tab öffnen: So setzt du target="_blank" richtig ein

AUTOR • Jul 04, 2026
Frontend

Optimale Bildpositionierung mit HTML: So baust du effektive Layouts, die funktionieren

AUTOR • Jul 04, 2026
Frontend

Design in HTML: So konvertieren Sie Ihre Entwürfe in Code ohne Chaos

AUTOR • Jul 04, 2026
Frontend

SVG Bilder aus Dateien in HTML einbetten: So klappt es sauber, skalierbar und SEO-freundlich

AUTOR • Jul 04, 2026

Beliebte Beiträge

DevOps & Deployment

Erfolgreiche Strategien zur Optimierung Ihres Gigacube Netzwerks

AUTOR • Jun 16, 2025
Frontend

Kreative Wünsche zum Neuen Jahr: Inspiration für Deine Neujahrsgrüße

AUTOR • May 12, 2025
Frontend

Die Moral für Fabel: Lehren aus den Geschichten der Tiere

AUTOR • May 05, 2025
Backend

Autokennzeichen RH

AUTOR • Jul 23, 2024
Backend

BLK Kennzeichen: Alles, was Sie darüber wissen müssen

AUTOR • Jul 23, 2024
API & Webservices

Autokennzeichen ME: Alles, was Sie über das Kfz-Kennzeichen für Mainz wissen müssen

AUTOR • Jun 18, 2024
DevOps & Deployment

Finde ausschließen: Verborgene Elemente in Suchanfragen entdecken

AUTOR • May 06, 2024
DevOps & Deployment

Effektive Handhabung von ZIP-Dateien auf Linux-Systemen

AUTOR • May 06, 2024
DevOps & Deployment

Erstellung von Ubuntu-Diensten: Eine umfassende Anleitung

AUTOR • May 06, 2024
DevOps & Deployment

Partitionsverwaltung in Linux: Zeige deine Speicherbelegungen an

AUTOR • May 06, 2024
Backend

Entdecke das Kodachi: Die unsichtbare Klinge der Samurai

AUTOR • May 06, 2024
DevOps & Deployment

Linux-Befehle im Hintergrund ausführen: Eine umfassende Anleitung

AUTOR • May 06, 2024
DevOps & Deployment

Veeam Immutable Repository: Schutz Ihrer Daten vor Ransomware und Datenverlust

AUTOR • May 06, 2024
DevOps & Deployment

Die faszinierende Geschichte von Linux: Von bescheidenen Anfängen zur globalen Revolution

AUTOR • May 06, 2024
DevOps & Deployment

Digitale Nomaden: Ihr ultimativer Leitfaden für ein grenzenloses Leben

AUTOR • May 06, 2024
Backend

So richten Sie einen Webserver Schritt für Schritt ein

AUTOR • May 06, 2024
Frontend

HTML in E-Mails einbetten: Verbessern Sie Ihre E-Mail-Kommunikation

AUTOR • Apr 24, 2024
Frontend

CSS effektiv einbinden: Ein umfassender Leitfaden

AUTOR • Apr 24, 2024
Frontend

Anchor Links: Einfach erklärt und optimiert einsetzen

AUTOR • Apr 24, 2024
Frontend

Einfacher Einstieg: HTML-Webseiten erstellen für Anfänger

AUTOR • Apr 24, 2024