Startseite > Prozessverwaltung > disown

disown: Eigentümerschaft von laufenden Jobs aufgeben (wenn nohup vergessen wurde)

Entfernt einen bereits laufenden Job aus der Jobliste der aktuellen Shell, um zu verhindern, dass dieser Job beendet wird (SIGHUP), wenn das Terminal geschlossen oder die Sitzung abgemeldet wird. Wird typischerweise verwendet, wenn ein Befehl versehentlich ohne `nohup` ausgeführt wurde.

Was ist disown?

Eine Shell wie Bash sendet ein 'Beenden!'-Signal (SIGHUP) an alle von ihr verwalteten Jobs, wenn das Terminal geschlossen wird. `disown` entfernt einen bestimmten Job aus der Verwaltungsliste der Shell, sodass er beim Beenden der Shell nicht mitbeendet wird.

Wann wird es verwendet?

  • Wenn nohup vergessen wurde: Wird verwendet, wenn ein langwieriger Job einfach gestartet wurde, man aber Feierabend machen muss und der Job nicht beendet werden darf.
  • Arbeitsablauf: Wird in der Reihenfolge 'Anhalten im laufenden Betrieb (Strg+z) -> In den Hintergrund verschieben (bg) -> Besitz aufgeben (disown)' verwendet.
  • Shell-interner Befehl: Es handelt sich um eine in der Shell (Bash, Zsh usw.) integrierte Funktion, kein separates Programm.

Hauptoptionen (Shell)

Ohne Optionen wird der zuletzt ausgeführte Job angesprochen. Um einen bestimmten Job anzugeben, verwenden Sie die 'Job-Nummer (Job ID)'

1. Grundlegende Verwendung und Zielauswahl

2. Status beibehalten

3. Hilfe

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`disown` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Beispielszenarien (obligatorische Muster)

`disown` wird selten allein verwendet, sondern meistens im Set mit `Ctrl+z` und `bg`.

Situation: Backup ohne `nohup` gestartet!

Das Skript `backup.sh` wurde einfach ausgeführt und dauert angeblich 1 Stunde. Wenn das Terminal geschlossen wird, stoppt auch das Backup. Hier ist, wie man es rettet.

3 Rettungsschritte (Schritt für Schritt)

Geben Sie die Tasten in der folgenden Reihenfolge ein.

  • 1. Drücken Sie `Strg + z` im laufenden Terminal, um den Job vorübergehend anzuhalten.
  • 2. Geben Sie den Befehl `bg` ein, um den angehaltenen Job im Hintergrund fortzusetzen.
  • 3. Geben Sie den Befehl `disown` ein, um die Verbindung zur Shell zu trennen.

Nur bestimmte Jobs trennen

disown %2

Trennt nur Job Nummer 2, der mit `jobs` überprüft wurde.

In der Liste belassen (-h)

disown -h %1

Macht den Job sichtbar, wenn der Befehl `jobs` eingegeben wird, aber er wird nicht beendet, wenn das Terminal geschlossen wird.

Installation

`disown` ist ein in Shells wie Bash und Zsh integrierter (Built-in) Befehl und erfordert keine separate Installation.

Keine Installation erforderlich

Wenn Sie ein Linux-Terminal verwenden, ist es bereits installiert.

Tipps & Hinweise

Nützliche Tipps

  • Job ID vs PID: `disown` verwendet die Job-Nummer der Shell (Job ID, z.B. %1) und nicht die Prozess-ID (PID, z.B. 1234). Vergessen Sie nicht, das `%` voranzustellen.
  • Ausgabe nicht überprüfbar: `nohup` erstellt eine `nohup.out`-Datei, aber `disown` trennt einen bereits laufenden Job, sodass die Ausgabe verloren gehen kann. Um die Ausgabe zu erhalten, müsste man komplexere Tools wie `gdb` verwenden.
  • Überprüfungsmethode: Nach `disown` verschwindet der Job aus der `jobs`-Liste (wenn keine Option verwendet wurde). Um zu überprüfen, ob der Prozess noch läuft, müssen Sie `ps -ef | grep Befehl` verwenden.

Verwandte Befehle

Funktional ähnliche oder häufig zusammen verwendete Befehle.



Gleiche Kategorie Befehle