Wat is nohup?
nohup staat voor 'No Hang Up' en betekent dat een commando wordt uitgevoerd terwijl het het hang-up signaal (HUP-signaal) negeert. Normaal gesproken wordt een draaiend programma beëindigd wanneer u het terminalvenster sluit, maar nohup voorkomt dit als een schild.
3 Kernconcepten
- HUP-signaal negeren: Negeert het beëindigingssignaal (SIGHUP) dat door het systeem wordt verzonden wanneer een gebruiker uitlogt, waardoor het proces blijft draaien.
- nohup.out: Als er geen apart opslagbestand is opgegeven, worden de uitvoerresultaten (uitvoerinhoud) automatisch opgeslagen in het `nohup.out`-bestand.
- & (Achtergrond): nohup alleen neemt de terminal in beslag. Meestal wordt `&` aan het einde van het commando toegevoegd om het naar de achtergrond te sturen.
Belangrijkste Syntaxis en Opties (Shell)
nohup zelf heeft geen complexe opties. In plaats daarvan wordt het gebruikt in combinatie met het **uit te voeren commando** en **redirection (uitvoerrichting opgeven)**.
1. Basisuitvoeringsconfiguratie
2. Log (uitvoer) Beheer
3. Hulp
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`nohup` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Voorbeelden van gebruiksscenario's
De meest gebruikte nohup-patronen in de praktijk.
Meest basale gebruik
nohup ./backup.sh &
Voert een script uit op de achtergrond. De uitvoer wordt verzameld in `nohup.out`.
Logbestandsnaam opgeven (aanbevolen)
nohup python3 app.py > my-app.log 2>&1 &
Slaat logs op in `my-app.log` in plaats van `nohup.out`. `2>&1` betekent dat foutmeldingen ook in hetzelfde bestand worden opgeslagen.
Uitvoeren zonder logs
nohup ./heavy-task.sh > /dev/null 2>&1 &
Als de uitvoer niet nodig is of te veel is en er een risico is dat de schijf vol raakt, wordt de uitvoer naar `/dev/null` gestuurd.
Actieve nohup-processen zoeken
ps -ef | grep app.py
Controleer actieve processen met het `ps`-commando.
Installatie
nohup is een standaard commando dat deel uitmaakt van 'GNU Coreutils' en is al geïnstalleerd op bijna alle Linux-distributies.
Installatie controleren
In de meeste gevallen is er geen aparte installatie nodig. U kunt de installatiestatus controleren met het onderstaande commando.
Versie controleren
nohup --version
Tips & Waarschuwingen
Handige tips
- Wat als een taak al draait?: Als u nohup bent vergeten en een taak al hebt gestart, kunt u deze pauzeren met `Ctrl+z`, vervolgens naar de achtergrond verplaatsen met `bg` en het `disown -h %1` commando gebruiken om het nohup-effect te bereiken.
- Hoe te beëindigen: Een proces dat met nohup is gestart, kan niet worden beëindigd met `Ctrl+c`. U moet de PID (proces-ID) vinden met `ps -ef | grep [naam]` en het proces beëindigen met het `kill -9 [PID]` commando.
- Let op schijfruimte: Als een langlopend programma continu naar `nohup.out` schrijft, kan het bestand enorm groot worden en de server laten crashen. Maak het regelmatig leeg of gebruik `/dev/null`.