Wat is Nohup en hoe gebruik je het?
Er zijn veel commando's beschikbaar op Linux-systemen. Er zijn er een paar die je meerdere keren per dag zult gebruiken en andere zijn over het algemeen gereserveerd voor speciale gevallen. Nohup is zo'n commando. Je zult het niet elke dag gebruiken, maar je zult dankbaar zijn dat het er is wanneer je het nodig hebt.
Wat is Nohup?
Nohup is een afkorting voor "No Hangups." Het is geen commando dat je alleen uitvoert. Nohup is een aanvullende opdracht die het Linux-systeem vertelt om een andere opdracht niet te stoppen zodra deze is gestart. Dat betekent dat het blijft werken totdat het klaar is, zelfs als de gebruiker die ermee begon uitlogt. De syntaxis voor nohup is eenvoudig en ziet er ongeveer zo uit:
nohup sh your-script.sh &
Let op de "&" aan het einde van de opdracht. Dat verplaatst het commando naar de achtergrond, waardoor je de terminal waarin je werkt bevrijdt.
Nohup werkt met vrijwel elke opdracht die u in de terminal uitvoert. Het kan worden uitgevoerd met aangepaste scripts en met standaard systeemopdrachten en opdrachtregelhulpprogramma's.
nohup.out
Omdat nohup onafhankelijk van de gebruiker die ermee is gestart kan blijven werken, moet de opdracht ergens zijn om berichten of fouten uit te voeren. Omdat er geen terminal is om ermee te associëren, logt nohup alles in bij een uitvoerbestand, nohup.out.
Standaard bevindt dat bestand zich in de map waarin u de opdracht hebt gestart. Nohup.out is enigszins uniek omdat het zowel de standaarduitvoer als de foutuitvoer samen bevat. Nohup verwijst standaard allebei naar hetzelfde bestand.
Je hoeft echter niet per se nohup.out te gebruiken. Het is gewoon de standaard. U kunt een aangepaste uitvoer opgeven wanneer u nohup uitvoert en deze op een aangepaste locatie plaatst.
nohup sh your-script.sh> /path/to/custom.out &
De aangepaste uitvoer bevat exact dezelfde gegevens als het standaard nohup.out-bestand.
Verschillen met Daemons
Op dit punt vraag je je waarschijnlijk af wat niks anders maakt dan een gedemonstreerd proces. Ze lijken immers allebei hetzelfde doel te dienen, maar echt niet. Daemons lopen continu op de achtergrond. Ze zijn het best gereserveerd voor processen die u niet wilt verlaten, zoals servers. Ze vereisen ook meer werk om te programmeren, dus ze zijn niet geschikt voor eenvoudige eenmalige scripts.
Nohup is voor eenmalig gebruik. Denk aan een script dat lang zal duren om te worden uitgevoerd maar dat uiteindelijk nog steeds zal worden voltooid. Misschien is er een lange en gecompliceerde taak die je zo nu en dan uitvoert en die uren in beslag neemt. U wilt een terminal niet open laten staan of een gebruiker die is ingelogd, dus u gebruikt nohup om hem op de achtergrond te houden. Als extra bonus registreert het automatisch alles voor u.
Je kunt zien dat nohup geen dagelijks hulpmiddel is, maar het kan erg handig zijn voor de juiste taak. Het valt ergens tussen een normaal kort script en een voortdurend draaiende daemon. Het helpt je om meer afstand te nemen van langere scripts die je misschien regelmatig verspild hebt aan tijd door te babysitten.