Android

Hur man kör Linux-kommandon i bakgrunden

Linux Commands for Beginners 05 - Basic File Editing

Linux Commands for Beginners 05 - Basic File Editing

Innehållsförteckning:

Anonim

Normalt när du kör ett kommando i terminalen måste du vänta tills kommandot är slut innan du kan ange ett annat. Detta kallas att köra kommandot i förgrunden eller förgrundsprocessen. När en process körs i förgrunden upptar den ditt skal och du kan interagera med det med hjälp av inmatningsenheterna.

Vad händer om kommandot tar lång tid att slutföra, och du vill köra andra kommandon under tiden? Du har flera alternativ till ditt förfogande. Det mest uppenbara och okomplicerade alternativet är att starta en ny skal-session och köra kommandot i den. Ett annat alternativ är att köra kommandot i bakgrunden.

En bakgrundsprocess är en process / kommando som startas från en terminal och körs i bakgrunden utan interaktion från användaren., vi kommer att prata om bakgrundsprocesserna är Linux. Vi visar hur du startar ett kommando i bakgrunden och hur du håller processen igång efter att skal-sessionen är stängd.

Kör en Linux-kommando i bakgrunden

För att köra ett kommando i bakgrunden, lägg till ampersand-symbolen ( & ) i slutet av kommandot:

command &

Skaljobb-ID (omgiven av parenteser) och process-ID kommer att skrivas ut på terminalen:

25177

Du kan ha flera processer som körs i bakgrunden samtidigt.

Bakgrundsprocessen fortsätter att skriva meddelanden till terminalen från vilken du åberopade kommandot. För att undertrycka stdout och stderr meddelanden använder du följande syntax:

command > /dev/null 2>&1 &

>/dev/null 2>&1 betyder att omdirigera stdout till /dev/null och stderr till stdout .

Använd jobs att visa status för alla stoppade och bakgrundsjobb i den aktuella skal-sessionen:

jobs -l

Utgången inkluderar jobbnummer, process-ID, jobbtillstånd och kommandot som startade jobbet:

+ 25177 Running ping google.com &

För att föra en bakgrundsprocess i förgrunden använder du kommandot fg :

fg

fg %1

För att avsluta bakgrundsprocessen använder du kill kommandot följt av process-ID:

kill -9 25177

Flytta en förgrundsprocess till bakgrund

Så här flyttar du en körande förgrundsprocess i bakgrunden:

  1. Stoppa processen genom att skriva Ctrl+Z Flytta den stoppade processen till bakgrunden genom att skriva bg .

Håll bakgrundsprocesser igång efter att en skal har gått ut

Om din anslutning tappas eller om du loggar ut från skal-sessionen avslutas bakgrundsprocesserna. Det finns flera sätt att hålla processen igång när den interaktiva skal-sessionen är slut.

Ett sätt är att ta bort jobbet från skalets jobbkontroll med hjälp av det disown skalet:

disown

disown %1

Bekräfta att jobbet tas bort från tabellen över aktiva jobb med kommandot jobs -l . Använd ps aux kommandot för att lista alla löpande processer, inklusive de avvisade.

Ett annat sätt att hålla en process igång efter att skalet har gått ut är att använda nohup .

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.

Om du nohup köra ett kommando i bakgrunden med nohup kommandot skriver du:

nohup command &

Kommandoutputen omdirigeras till filen nohup.out .

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

alternativ

Det finns ett antal program som gör att du kan ha flera interaktiva sessioner samtidigt.

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 fortsätter att köras även om du stänger terminalen.

Slutsats

För att köra ett kommando i bakgrunden, inkludera & i slutet av kommandot.

När du kör ett kommando i bakgrunden behöver du inte vänta tills det är slut innan du kan utföra ett annat.

nohup fg bg jobb avslå terminal