Wat is disown?
Een shell zoals Bash stuurt een 'stop!' signaal (SIGHUP) naar alle taken die het beheert wanneer de terminal wordt gesloten. `disown` verwijdert een specifieke taak uit de beheerde lijst van de shell, zodat deze niet samen met de shell wordt beëindigd.
Wanneer gebruik je het?
- Als je nohup bent vergeten: Gebruik dit wanneer je een langlopende taak hebt gestart, maar moet vertrekken en de taak niet mag stoppen.
- Werkstroom: Gebruik het in de volgorde: Pauzeren tijdens uitvoering (Ctrl+z) -> Naar achtergrond verplaatsen (bg) -> Afstand doen van eigendom (disown).
- Ingebouwd shell-commando: Dit is geen apart programma, maar een ingebouwde functie van de shell (Bash, Zsh, enz.).
Belangrijkste opties (Shell)
Indien gebruikt zonder opties, is de meest recente taak het doel. Om een specifieke taak aan te geven, gebruik je het 'Taaknummer (Job ID)'.
1. Basisgebruik en doeltoewijzing
2. Status behouden
3. Help
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`disown` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Voorbeelden van gebruiksscenario's (verplicht patroon)
disown wordt zelden alleen gebruikt, maar eerder in combinatie met `Ctrl+z` en `bg`.
Situatie: Backup gestart zonder nohup!
`backup.sh` is gewoon gestart en duurt 1 uur. Als de terminal wordt gesloten, stopt de backup ook. Dit is hoe je het redt.
3 stappen om te redden (Stap-voor-stap)
Voer de toetsen in de onderstaande volgorde in.
- 1. Druk `Ctrl + z` in de lopende terminal om de taak tijdelijk te pauzeren.
- 2. Voer het `bg`-commando in om de gepauzeerde taak op de achtergrond te hervatten.
- 3. Voer het `disown`-commando in om de verbinding met de shell te verbreken.
Specifieke taak selecteren en loskoppelen
disown %2
Koppel alleen taaknummer 2 los, zoals gecontroleerd met `jobs`.
In de lijst laten staan (-h)
disown -h %1
Zorgt ervoor dat de taak zichtbaar blijft bij het uitvoeren van `jobs`, maar niet stopt wanneer de terminal wordt gesloten.
Installatie
disown is een ingebouwd commando in shells zoals Bash en Zsh, dus er is geen aparte installatie nodig.
Geen installatie nodig
Als je een Linux-terminal gebruikt, is het al geïnstalleerd.
Tips & Aandachtspunten
Handige tips
- Job ID vs PID: `disown` gebruikt geen Proces ID (PID, bijv. 1234), maar het taaknummer van de shell (Job ID, bijv. %1). Vergeet niet de `%` toe te voegen.
- Output niet controleerbaar: `nohup` creëert een `nohup.out`-bestand, maar `disown` koppelt een reeds lopende taak los, waardoor de output verloren kan gaan. Het behouden van de output vereist complexere methoden, zoals het gebruik van `gdb`.
- Controleer de methode: Na disown verdwijnt de taak uit de `jobs`-lijst (tenzij een optie is gebruikt). Om te controleren of het proces nog actief is, moet je `ps -ef | grep commando` gebruiken.