Hvordan starte Linux -kommandoen i bakgrunnen og løsne prosessen i terminalen

Hvordan starte Linux -kommandoen i bakgrunnen og løsne prosessen i terminalen
I denne guiden lærer vi hvordan du kjører en kommando i bakgrunnen og hvordan du kan fjerne prosessene fra terminalen.

Forutsetninger:

For å utføre trinnene i denne guiden, trenger du følgende komponenter:

  • Et funksjonelt Linux -system. Lær mer om å sette opp en Ubuntu VM på VirtualBox.
  • Tilgang til en ikke-root-bruker med SUDO-tillatelse.

Kjører prosessene fra terminalen

Når du kjører en kommando, gyter prosessene under terminalen. Hvis terminalen er lukket, avsluttes alle de tilhørende prosessene automatisk. I visse situasjoner kan det være upraktisk. For eksempel:

  • Overveldende mengde outputdata og feil/diagnostiske meldinger
  • Tilfeldig nedleggelse av terminalen som resulterer i avslutning av potensielt oppdragskritiske prosesser osv.

For å takle disse problemene, er det et par alternativer:

  • Kjører prosessene i bakgrunnen
  • Løsne prosessene fra terminalen

Prosessene som kjører i bakgrunnen vil ikke overvelde terminalutgangen. Dessuten er terminalen fritt til å kjøre tilleggskommandoene. For løsrevne prosesser vil de ikke avslutte selv om terminalen er lukket.

Starter prosessene i bakgrunnen

I mange tilfeller kan en kommando ta ganske lang tid å fullføre. Generelt blir brukeren tvunget til å vente til kommandoen er ferdig. Når du for eksempel bruker en tekstredigerer, er skallet utilgjengelig til redaktøren er stengt.

For å demonstrere bruker vi “Ja” -kommandoen:

$ mann ja

Metode 1:

Det er et par måter hvor vi kan sende løpeprosessen til bakgrunnen.

Først stopper vi prosessen uten å avslutte den. For å gjøre det, kjør følgende kommando og trykk “Ctrl + Z”:

$ ja "hei verden"> /dev /null

Kjør nå “BG” -kommandoen for å sende prosessen i bakgrunnen:

$ BG

Når prosessen er presset i bakgrunnen, gjenopptar prosessen. Følgende kommando viser alle løpsjobbene i bakgrunnen:

$ jobber

Metode 2:

I forrige metode begynte prosessen først å løpe i forgrunnen. Vi gikk til pause i prosessen, sendte den til bakgrunnen og gjenopptok den. I stedet kan vi kjøre prosessen direkte i bakgrunnen.

For å gjøre det, legg til "&" -tegnet på slutten av kommandoen:

$ ja "oh long johnson"> /dev /null &

Her kjøres de gyte prosessene automatisk i bakgrunnen. For å bekrefte, sjekk listen over bakgrunnsjobber:

$ jobber

Metode 3:

Vi kan også lansere prosessene i bakgrunnen ved hjelp av TMUX, en kraftig multiplexer som kan administrere flere terminaløkter i et enkelt vindu. Det kommer ikke forhåndsinstallert i Linux. Imidlertid er det tilgjengelig for alle de store Linux -distrosene. Lær mer om TMUX -installasjon på Linux.

I det følgende eksempel bruker vi TMUX for å pinge et mål og logge utgangen:

$ tmux new -d 'ping -c 9 127.0.0.1> ping.Logg'

Loggfilen verifiserer om kommandoen kjører vellykket eller ikke:

$ katt ping.Logg

Det er bare ett eksempel på hva tmux kan gjøre. Lær mer om tmux med eksempler.

Returnerer jobbene i forgrunnen

Hvis du ønsker å returnere en jobb i forgrunnen, bruker vi “FG” -kommandoen. Vi trenger også jobbnummeret fra jobbkommandoen.

Først må du bestemme jobben du vil ta med i forgrunnen:

$ jobber

Bruk nå “FG” -kommandoen:

$ fg %

Løsne prosessene fra terminalen

Enhver prosess assosiert med en terminal avsluttes når terminalen stenger, enten den kjører i forgrunnen eller i bakgrunnen. For å unngå prosessoppsigelse, dissosierer vi målprosessen fra terminalen/skallet.

Metode 1:

For å fornekte en prosess, trenger vi først en bakgrunnsprosess:

$ ja "qwerty"> /dev /null &

Sjekk listen over løpende bakgrunnsjobber:

$ jobber

Legg merke til serienummeret til målbakgrunnsjobben. Bruk nå kommandoen "Disown" for å løsne den fra terminalen:

$ DENOWN %

Måljobben skal nå forsvinne fra jobblisten:

$ jobber

Imidlertid kan du fremdeles se prosessen som kjører i bakgrunnen:

$ ps aux

Metode 2:

En annen måte å løsrive en prosess fra overordnet terminal er å bruke “nohup” -kommandoen. Det holder en prosess i bakgrunnen selv etter å ha stengt terminalen.

Bruken av "nohup" er som følger:

$ NOHUP Og

Kontroller om jobben opprettes vellykket:

$ jobber

Metode 3:

Denne metoden løsner målprosessen fullstendig. Det er en mer effektiv måte å løsrive GUI -appene på.

For eksempel, for å starte Firefox og løsne den helt fra terminalen, bruk følgende kommando:

$ Firefox /dev/null &

Her:

  • De /dev/null er en spesiell enhet i Linux som blir kvitt alle data som er skrevet til den.
  • I forrige kommando blir inngangen lest fra og utdataene sendes til /dev/null. Lær mer om de andre måtene å bruke /dev /null.

Konklusjon

Vi demonstrerte de forskjellige måtene å drive en prosess i bakgrunnen. Vi viste også måtene å fjerne en prosess fra overordnede terminalen. Disse teknikkene kan være nyttige når du jobber med terminalen eller kjører et skript.

Hvis du trenger å kjøre visse kommandoer i et spesifikt mønster, kan vi laste det som en SystemD -tjeneste. For eksterne maskiner kan vi også bruke tredjepartsverktøyene som Ansible for å automatisere nesten alt.

Glad databehandling!