Vad är Nohup och hur använder du det?
Det finns många kommandon tillgängliga på Linux-system. Det finns några som du använder flera gånger om dagen, och det finns andra i allmänhet reserverade för speciella användningsfall. Nohup är ett sådant kommando. Du kommer inte använda det varje dag, men du är tacksam när den behöver du.
Vad är Nohup?
Nohup är kort för "No Hangups." Det är inte ett kommando som du kör själv. Nohup är ett kompletterande kommando som berättar för Linux-systemet att inte stoppa ett annat kommando när det har startat. Det betyder att det fortsätter att springa tills det är gjort, även om användaren som startade loggar ut. Syntaxen för Nohup är enkel och ser något ut så här:
nohup sh your-script.sh &
Notera "&" i slutet av kommandot. Det flyttar kommandot till bakgrunden och frigör terminalen som du arbetar med.
Nohup arbetar med nästan alla kommandon som du kör i terminalen. Den kan köras med anpassade skript samt standard systemkommandon och kommandoradsverktyg.
nohup.out
Eftersom nohup kan fortsätta att köra oberoende av användaren som startade det, behöver kommandot någonstans att utföra några meddelanden eller fel. Eftersom det inte finns någon terminal att associera med det loggar nohup allt till en utdatafil, nohup.out.
Som standard finns den filen i vilken katalog du startade kommandot i. Nohup.out är något unikt eftersom det innehåller både standardutgången och felutgången tillsammans. Nohup omdirigerar båda till samma fil som standard.
Du behöver inte nödvändigtvis använda nohup.out, dock. Det är bara standard. Du kan ange en anpassad utgång när du kör nohup och placera den på en anpassad plats.
nohup sh your-script.sh> /path/to/custom.out &
Den anpassade utsignalen innehåller exakt samma data som standard-filen nohup.out skulle.
Skillnader med Daemons
Vid denna tid undrar du förmodligen vad som ställer nohup bortsett från en demoniserad process. Trots allt verkar de båda betjäna den relativt samma ändamålet men det gör det inte. Daemoner kör kontinuerligt i bakgrunden. De är bäst reserverade för processer som du inte vill någonsin gå ut, som servrar. De behöver mer arbete att programmera också, så de är inte bäst för enkla engångsskript.
Nohup är för en enda användning. Tänk på ett skript som kommer att ta lång tid att springa men slutar ändå slutligen. Kanske finns det en lång och komplicerad uppgift som du kör varje gång och då tar det timmar att slutföra. Du vill inte lämna en terminal öppen eller en användare inloggad, så du använder nohup för att hålla den igång i bakgrunden. Som en extra bonus loggar den automatiskt allt för dig.
Du kan se att nohup inte är ett vardagligt verktyg, men det kan vara mycket användbart för rätt uppgift. Det faller någonstans mellan ett vanligt kortskript och en kontinuerligt igång daemon. Det hjälper dig att ta mer av en hands-off inställning till längre skript som du kan ha regelbundet slösat bort tid barnpassning.