Send en prosess til bakgrunn Linux

Send Process Background Linux



Når vi arbeider med grafiske skrivebordsmiljøer, bekymrer vi oss sjelden for bakgrunnsprosesser. Hvis vi har en prosess som kjører i forgrunnen, kan vi raskt lage et annet terminalvindu og fortsette arbeidet vårt.

Men hvis du er i et rått terminalskall som SSH, vil du ofte føle deg bekymret for prosesser som opptar og blokkerer skallet til de er fullført, spesielt på langvarige jobber. Det er der begrepet bakgrunn og forgrunnsprosesser spiller inn.







Denne opplæringen vil diskutere hva bakgrunn og forgrunnsprosesser er, inkludert å lage og administrere dem i Linux.



Hva er en prosess?

La meg begynne på det grunnleggende nivået: hva er en prosess?



I Linux er en prosess en forekomst av et program. Vanligvis betyr dette at enhver kommando eller kjørbar i et skall er en prosess.





Det er hovedsakelig to typer prosesser:

  • Forgrunnsprosesser
  • Bakgrunnsprosesser

Forgrunnsprosesser er hovedsakelig typiske applikasjoner som vi starter og samhandler med dem. Et eksempel kan være nautilus filbehandling i Gnome. I de fleste tilfeller kan vi starte forgrunnsprosesser fra skallet eller skrivebordsmiljøet.



På den annen side kjører bakgrunnsprosesser i bakgrunnen og krever ingen innspill eller interaksjon fra brukeren. Et eksempel kan være en hvilken som helst typisk Linux -demon.

Hvordan kjøre en prosess i bakgrunnen

Anta at vi har en prosess som, mens den kjører, opptar skalløkten og hindrer oss i å utføre kommandoer til den går ut.

For eksempel, hvis vi kjører Firefox -nettleseren i skallet, vil den innta økten til prosessen avsluttes.

$firefox


Som du kan se, så lenge Firefox kjører, er shell -ledeteksten ikke tilgjengelig, og vi kan ikke utføre flere kommandoer.

For å løse dette kan vi gjøre det på to måter:

1: Bruke et Ampersand (&)

Den første metoden er å bruke ampersand & sign. Dette forteller skallet å kjøre hvilken kommando som er foran ampersanden i bakgrunnen.

Et eksempel:

firefox&

I et slikt scenario kjøres prosessen i bakgrunnen og gyter som en ny shell -melding som lar oss fortsette å utføre kommandoer.

Det gir også to numeriske identifikatorer. Den første i firkantede parenteser er jobb -ID, mens den neste er prosess -ID.

2: Bruk CTRL + Z, bg kommando.

Den neste metoden du kan bruke for å sette en prosess i bakgrunnen er å bruke snarveien CTRL + Z. Dette stopper prosessen fra å blokkere skallet. Du kan deretter bruke kommandoen bg til å skyve den til bakgrunnen.

Start for eksempel med å starte Firefox som:

$Firefox

Mens prosessen kjører, trykker du på CTRL + Z. Dette returnerer meldingen din. Til slutt skriver du inn kommandoen bg for å skyve prosessen i bakgrunnen.

Slik viser du bakgrunnsprosesser

For å se og administrere prosesser i bakgrunnen, bruk jobbkommandoen i skallet. Det vil vise bakgrunnsjobbene i den nåværende terminaløkten.

For eksempel:

$arbeidsplasser

Et eksempel på utdata for bakgrunnsjobber:

For å bringe en prosess som kjører i bakgrunnen til forgrunnen, bruk kommandoen fg etterfulgt av jobb -ID.

For eksempel, for å bringe firefox -jobben i forgrunnen, bruker vi kommandoen:

$fg %1

For å sette i bakgrunnen igjen, trykk CTRL + Z etterfulgt av bg -kommandoen.

Hvordan gjøre en prosess vedvarende etter at shell dør

Når du kjører prosesser i bakgrunnen, og skalløkten din dør, avsluttes alle prosessene knyttet til den, noe som kan være problematisk, spesielt hvis det er en SSH -økt.

Dette er imidlertid ikke et for stort problem hvis du bruker en terminalmultiplekser som tmux eller skjerm fordi du i så fall bare kan koble økten til igjen.

Men hvis du kjører en skalløkt uten en multiplexer, kan du bruke nohup -kommandoen.

Nohup-kommandoen er immun mot henger og kan ignorere SIGHUP-signalet som sendes til en prosess.

Derfor, hvis du kjører en kommando med nohup, fortsetter den å kjøre selv om skalløkten ved et uhell dør.

For eksempel, for å kjøre Firefox med nohup, bruker du kommandoen:

nohupFirefox&

Dette vil kjøre prosessen i bakgrunnen så lenge et skall avsluttes.

Du kan kjøre en ny terminaløkt og se bakgrunnsjobbene. Du vil se at prosessen fremdeles kjører i bakgrunnen.

Konklusjon

I denne opplæringen diskuterte vi forskjellige måter å kjøre og sende prosesser til bakgrunnen i Linux. Vi dekket også hvordan vi kan bringe en bakgrunnsprosess til bakgrunnen og fortsette å legge på røret ved avslutning av skall.