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

Hvordan Starte Linux Kommandoen I Bakgrunnen Og Losne Prosessen I Terminalen



I denne veiledningen vil vi lære hvordan du kjører en kommando i bakgrunnen og hvordan du kobler prosessene fra terminalen.

Forutsetninger:

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

  • Et funksjonelt Linux-system. Lære mer om sette opp en Ubuntu VM på VirtualBox .
  • Tilgang til en ikke-rootbruker med sudo-tillatelse .

Kjøre prosessene fra terminalen

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







  • Overveldende mengde utdata og feil/diagnostiske meldinger
  • Utilsiktet stenging av terminalen som resulterer i avslutning av potensielt virksomhetskritiske prosesser mv.

For å takle disse problemene er det et par alternativer:



  • Kjører prosessene i bakgrunnen
  • Koble prosessene fra terminalen

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



Starte prosessene i bakgrunnen

I mange tilfeller kan en kommando ta ganske lang tid å fullføre. Vanligvis blir brukeren tvunget til å vente til kommandoen er ferdig. For eksempel, når du bruker et tekstredigeringsprogram, er skallet utilgjengelig før redigeringsprogrammet er lukket.





For å demonstrere bruker vi 'yes'-kommandoen:

$ Mann ja



Metode 1:

Det er et par måter vi kan sende den kjørende prosessen 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å kommandoen 'bg' for å sende prosessen i bakgrunnen:

$ bg

Når den er presset i bakgrunnen, fortsetter prosessen. Følgende kommando viser alle de kjørende jobbene i bakgrunnen:

$ arbeidsplasser

Metode 2:

I den forrige metoden begynte prosessen først å kjøre i forgrunnen. Vi stoppet prosessen midlertidig, 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 'å lenge johnson' > / dev / null &

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

$ arbeidsplasser

Metode 3:

Vi kan også starte prosessene i bakgrunnen ved hjelp av tmux , en kraftig multiplekser som kan administrere flere terminaløkter i ett enkelt vindu. Det kommer ikke forhåndsinstallert i Linux. Imidlertid er den tilgjengelig for alle de store Linux-distroene. Lære mer om tmux-installasjon på Linux .

I følgende eksempel bruker vi tmux til å pinge et mål og logge utdataene:

$ tmux ny -d 'ping -c 9 127.0.0.1 > ping.log'

Loggfilen bekrefter om kommandoen kjører vellykket eller ikke:

$ katt ping.log

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

Setter jobbene tilbake i forgrunnen

Hvis du ønsker å sette en jobb tilbake i forgrunnen, bruker vi kommandoen 'fg'. Vi trenger også jobbnummeret fra jobbkommandoen.

Bestem først jobben du vil bringe i forgrunnen:

$ arbeidsplasser

Bruk nå 'fg' kommandoen:

$ fg %< Jobbnummer >

Koble prosessene fra terminalen

Enhver prosess knyttet til en terminal avsluttes når terminalen lukkes, enten den kjører i forgrunnen eller i bakgrunnen. For å unngå prosessavslutningen, fjerner 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 kjørende bakgrunnsjobber:

$ arbeidsplasser

Legg merke til serienummeret til målbakgrunnsjobben. Bruk nå kommandoen 'disown' for å koble den fra terminalen:

$ fornekte %< Jobbnummer >

Måljobben skal nå forsvinne fra jobblisten:

$ arbeidsplasser

Du kan imidlertid fortsatt se prosessen kjører i bakgrunnen:

$ ps til

Metode 2:

En annen måte å koble en prosess fra den overordnede terminalen på er å bruke 'nohup'-kommandoen. Det holder en prosess kjørende i bakgrunnen selv etter at terminalen er stengt.

Bruken av 'nohup' er som følger:

$ nohup < kommando > &

Bekreft om jobben er opprettet:

$ arbeidsplasser

Metode 3:

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

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

$ firefox dev / null &>/ dev / null &

Her:

  • De /dev/null er en spesiell enhet i Linux som kvitter seg med all data som er skrevet til den.
  • I forrige kommando blir inngangen lest fra og utgangen sendt til /dev/null . Lær mer om andre måter å bruke /dev/null .

Konklusjon

Vi demonstrerte de ulike måtene å kjøre en prosess på i bakgrunnen. Vi viste også frem måtene å koble en prosess fra den overordnede terminalen på. Disse teknikkene kan være nyttige når du arbeider med terminalen eller kjører et skript .

Hvis du trenger å kjøre visse kommandoer i et spesifikt mønster, kan vi laste det ned som en systemd tjeneste . For eksterne maskiner kan vi også bruke tredjepartsverktøy som Kan automatisere nesten alt .

Lykke til med databehandling!