Android

Linux nohup-opdracht

Using nohup to allows jobs to continue on logout

Using nohup to allows jobs to continue on logout

Inhoudsopgave:

Anonim

De opdracht nohup voert een ander programma uit dat is opgegeven als argument en negeert alle SIGHUP (hangup) signalen. SIGHUP is een signaal dat naar een proces wordt verzonden wanneer de controlerende terminal is gesloten.

Als u een programma via SSH uitvoert en uw verbinding verbreekt of als u uitlogt, wordt de sessie meestal beëindigd en stoppen alle processen die vanaf de terminal worden uitgevoerd. Dit is waar het commando nohup van pas komt. Het negeert alle ophangsignalen en het proces blijft doorgaan.

Hoe het nohup-commando te gebruiken

De syntaxis voor de opdracht nohup is als volgt:

nohup COMMAND

De opdracht accepteert geen andere opties behalve de standaard --help en --version .

Laten we het volgende voorbeeld bekijken:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

mycommand voert de opdracht mycommand op de voorgrond uit en stuurt de opdrachtuitvoer naar het bestand nohup.out . Dit bestand wordt gemaakt in de huidige werkmap. Als de gebruiker die de opdracht uitvoert geen schrijfmachtigingen heeft voor de werkmap, wordt het bestand gemaakt in de thuismap van de gebruiker.

Als u uitlogt of de terminal sluit, wordt het proces niet beëindigd.

Het commando uitvoeren op de achtergrond

Het gebruik van nohup op de voorgrond is niet erg handig omdat je pas met de shell kunt communiceren als de opdracht is voltooid.

Om de opdracht op de achtergrond uit te voeren, voegt u het & -symbool toe aan het einde van de opdracht:

nohup mycommand &

De uitvoer bevat de shell-taak-ID (tussen haakjes) en proces-ID:

25177

U kunt de taak-ID gebruiken om de opdracht op de voorgrond te plaatsen met de opdracht fg .

Als u om een ​​of andere reden het proces wilt beëindigen, gebruikt u de opdracht kill gevolgd door de proces-ID:

kill -9 25132

Uitvoer omleiden naar een bestand

Standaard verwijst nohup.out de opdrachtuitvoer naar het bestand nohup.out . Als u de uitvoer naar een ander bestand wilt omleiden, gebruikt u de standaard shell-omleiding.

Als u bijvoorbeeld de standaarduitvoer en standaardfout wilt omleiden naar de mycommand.out u:

nohup mycommand > mycommand.out 2>&1 &

De standaarduitvoer en standaardfout omleiden naar verschillende bestanden:

nohup mycommand > mycommand.out 2> mycommand.err &

alternatieven

Er zijn verschillende alternatieve programma's die u kunt gebruiken om te voorkomen dat een opdracht wordt beëindigd wanneer u de terminal sluit of de verbinding verliest.

Scherm

Screen of GNU Screen is een terminal-multiplexerprogramma waarmee u een schermsessie kunt starten en een willekeurig aantal vensters (virtuele terminals) binnen die sessie kunt openen. Processen die in Scherm worden uitgevoerd, blijven actief als hun venster niet zichtbaar is, zelfs als u de verbinding verliest.

tmux

Tmux is een modern alternatief voor het GNU-scherm. Met Tmux kunt u ook een sessie maken en meerdere vensters binnen die sessie openen. Tmux-sessies zijn persistent, wat betekent dat programma's die in Tmux worden uitgevoerd, blijven draaien, zelfs als u de terminal sluit.

Verloochenen

disown is een ingebouwde shell die een shell-taak verwijdert uit de taakcontrole van de shell. In tegenstelling tot nohup , kunt u disown ook gebruiken bij actieve processen.

Conclusie

nohup kunt u voorkomen dat opdrachten worden beëindigd wanneer u uitlogt of de terminal verlaat.

nee terminal