Skicka en process till bakgrund Linux

Send Process Background Linux



När vi arbetar med grafiska skrivbordsmiljöer oroar vi oss sällan för bakgrundsprocesser. Om vi ​​har en process som körs i förgrunden kan vi snabbt leka ytterligare ett terminalfönster och fortsätta med vårt arbete.

Men om du befinner dig i ett rått terminalskal som SSH, kommer du ofta att känna oro över processer som upptar och blockerar skalet tills de är klara, särskilt på långvariga jobb. Det är där begreppet bakgrund och förgrundsprocesser spelar in.







Denna handledning kommer att diskutera vad bakgrund och förgrundsprocesser är, inklusive att skapa och hantera dem i Linux.



Vad är en process?

Låt mig börja på grundnivån: vad är en process?



I Linux är en process en instans av ett program. Normalt betyder det att alla kommandon eller körbara i ett skal är en process.





Det finns huvudsakligen två typer av processer:

  • Förgrundsprocesser
  • Bakgrundsprocesser

Förgrundsprocesser är främst typiska applikationer som vi startar och interagerar med dem. Ett exempel skulle vara filhanteraren nautilus i Gnome. I de flesta fall kan vi starta förgrundsprocesser från skalet eller skrivbordsmiljön.



Å andra sidan körs bakgrundsprocesser i bakgrunden och kräver ingen input eller interaktion från användaren. Ett exempel skulle vara en typisk Linux -demon.

Hur man kör en process i bakgrunden

Anta att vi har en process som, medan den körs, upptar skal -sessionen och hindrar oss från att utföra kommandon tills den avslutas.

Till exempel, om vi kör Firefox -webbläsaren i skalet, kommer den att uppta sessionen tills processen avslutas.

$firefox


Som du kan se, så länge Firefox körs, är shell -prompten inte tillgänglig och vi kan inte utföra fler kommandon.

För att lösa detta kan vi göra det på två sätt:

1: Använda ett Ampersand (&)

Den första metoden är att använda ampersand & sign. Detta säger att skalet ska köra vilket kommando som går före ampersand i bakgrunden.

Ett exempel:

firefox&

I ett sådant scenario körs processen i bakgrunden och utlöses som en ny skalprompt så att vi kan fortsätta att utföra kommandon.

Det ger också två numeriska identifierare. Det första omges av hakparenteser är jobb -ID, medan det nästa är process -ID.

2: Använd kommandot CTRL + Z, bg.

Nästa metod du kan använda för att sätta en process i bakgrunden är att använda genvägen CTRL + Z. Detta hindrar processen från att blockera skalet. Du kan sedan använda kommandot bg för att skjuta det till bakgrunden.

Börja till exempel med att starta Firefox som:

$Firefox

Medan processen pågår trycker du på CTRL + Z. Detta returnerar din shell -prompt. Slutligen anger du kommandot bg för att driva processen i bakgrunden.

Hur man visar bakgrundsprocesser

Om du vill visa och hantera processer i bakgrunden använder du kommandot jobb i skalet. Det visar bakgrundsjobben i den aktuella terminalsessionen.

Till exempel:

$jobb

Ett exempel på utdata på bakgrundsjobb:

För att få en process som körs i bakgrunden till förgrunden, använd kommandot fg följt av jobb -id.

Till exempel, för att ta med Firefox -jobbet i förgrunden, använder vi kommandot:

$fg %1

För att sätta i bakgrunden igen, tryck på CTRL + Z följt av kommandot bg.

Hur man gör en process ihållande efter att shell dör

När du kör processer i bakgrunden och din shell -session dör, avslutas alla processer som är kopplade till den, vilket kan vara problematiskt, särskilt om det är en SSH -session.

Detta är emellertid inte ett alltför stort problem om du använder en terminalmultiplexer som tmux eller skärm eftersom du i så fall helt enkelt kan ansluta sessionen igen.

Men om du kör en skal -session utan multiplexer kan du använda kommandot nohup.

Nohup-kommandot är immun mot upphängningar och kan ignorera SIGHUP-signalen som skickas till en process.

Därför, om du kör ett kommando med nohup, fortsätter det att köras även om skal -sessionen av misstag dör.

Till exempel, för att köra Firefox med nohup, använd kommandot:

nohupFirefox&

Detta kommer att köra processen i bakgrunden så länge ett skal avslutas.

Du kan köra en ny terminalsession och visa bakgrundsjobb. Du kommer att se processen fortfarande köras i bakgrunden.

Slutsats

I denna handledning diskuterade vi olika sätt att köra och skicka processer till bakgrunden i Linux. Vi täckte också hur man tar en bakgrundsprocess till bakgrunden och fortsätter att lägga på när skalet avslutas.