Android

Linux nohup-kommando

Using nohup to allows jobs to continue on logout

Using nohup to allows jobs to continue on logout

Innehållsförteckning:

Anonim

nohup kommandot kör ett annat program som är specificerat som dess argument och ignorerar alla SIGHUP-signaler. SIGHUP är en signal som skickas till en process när dess kontrollterminal är stängd.

Vanligtvis när du kör ett program över SSH, om din anslutning tappar eller du loggar ut, avslutas sessionen och alla processer som körs från terminalen kommer att stoppas. Det är här nohup kommandot är praktiskt. Den ignorerar alla hangup-signaler och processen fortsätter att köras.

Hur man använder nohup-kommandot

Syntaxen för nohup kommandot är som följer:

nohup COMMAND

Kommandot accepterar inga andra alternativ förutom standard --help och --version .

Låt oss ta en titt på följande exempel:

nohup mycommand

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

nohup kör mycommand kommandot i förgrunden och omdirigerar kommandoutput till filen nohup.out . Denna fil skapas i den aktuella arbetskatalogen. Om användaren som kör kommandot inte har skrivbehörigheter till den fungerande katalogen skapas filen i användarens hemkatalog.

Om du loggar ut eller stänger terminalen avslutas inte processen.

Köra kommandot i bakgrunden

Att använda nohup i förgrunden är inte särskilt användbart eftersom du inte kommer att kunna interagera med skalet förrän kommandot har slutförts.

För att köra kommandot i bakgrunden lägg till symbolen & i slutet av kommandot:

nohup mycommand &

Utgången inkluderar skaljobb-ID (omgiven av parenteser) och process-ID:

25177

Du kan använda jobb-ID för att föra kommandot i förgrunden med fg kommandot.

Om du av någon anledning vill avsluta processen använder du kill kommandot följt av process-ID:

kill -9 25132

Omdirigera utgången till en fil

Som standard omdirigerar nohup kommandoutput till filen nohup.out . Om du vill omdirigera utgången till en annan fil använder du standard shell omdirigering.

För att till exempel omdirigera standardutmatningen och standardfelet till mycommand.out skulle du använda:

nohup mycommand > mycommand.out 2>&1 &

För att omdirigera standardutmatningen och standardfelet till olika filer:

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

alternativ

Det finns flera alternativa program som du kan använda för att undvika att ett kommando avslutas när du stänger terminalen eller blir frånkopplad.

Skärm

Screen eller GNU Screen är ett terminalmultiplexerprogram som låter dig starta en skärm session och öppna valfritt antal fönster (virtuella terminaler) i den sessionen. Processer som körs i skärmen kommer att fortsätta att köras när deras fönster inte syns även om du kopplas bort.

tmux

Tmux är ett modernt alternativ till GNU-skärmen. Med Tmux kan du också skapa en session och öppna flera fönster i den sessionen. Tmux-sessioner är ihållande, vilket innebär att program som körs i Tmux kommer att fortsätta att köras även om du stänger terminalen.

Förneka

disown är ett skal inbyggt som tar bort ett skaljobb från skalets jobbkontroll. Till skillnad från nohup kan du också använda disown på processer som körs.

Slutsats

nohup låter dig förhindra att kommandon avslutas när du loggar ut eller lämnar terminalen.

nohup terminal