Vanligvis når du kjører en kommando i terminalen, må du vente til kommandoen er fullført før du kan skrive inn en annen. Dette kalles å kjøre kommandoen i forgrunnen eller forgrunnen prosessen. Når en prosess som kjører i forgrunnen, det ligger i skallet, og du kan samhandle med det ved hjelp av input-enheter.
Hva hvis kommandoen tar lang tid å fullføre, og du ønsker å kjøre andre kommandoer i mellomtiden? Du har flere alternativer til din disposisjon., Den mest åpenbare og enkle alternativet er å starte et nytt skall session og kjøre kommandoen i det. Et annet alternativ er å kjøre kommandoen i bakgrunnen.
bakgrunn prosess er en prosess/kommando som er startet fra en terminal, og kjører i bakgrunnen, uten interaksjon fra brukeren.
I denne artikkelen, vi vil snakke om bakgrunnen prosesser er Linux. Vi vil vise deg hvordan du starter en kommando i bakgrunnen og hvordan å holde prosessen kjører etter shell økt lukkes.,
Kjøre en Linux-Kommando i Bakgrunnen #
for Å kjøre en kommando i bakgrunnen, ved å legge til tegnet symbolet (&
) på slutten av kommandoen:
command &
shell-jobb-ID-en (som er omgitt av klammer) og prosess-ID vil bli skrevet ut på terminalen:
25177
Du kan ha flere prosesser som kjører i bakgrunnen på samme tid.
bakgrunnen prosessen vil fortsette å skrive meldinger til terminalen fra der du startet den kommandoen., To suppress the stdout
and stderr
messages use the following syntax:
command > /dev/null 2>&1 &
>/dev/null 2>&1
means redirect stdout
to /dev/null
and stderr
to stdout
.,/div>
for Å få en bakgrunnsprosess til forgrunnen, kan du bruke fg
kommando:
fg
Hvis du har flere bakgrunnen jobber, inkluderer %
og jobb-ID-en etter kommandoen:
fg %1
for Å avslutte bakgrunnen prosessen, bruk kill
kommando etterfulgt av prosess-ID:
kill -9 25177
Flytt en Forgrunnen Prosessen Bakgrunn #
for Å flytte en kjører i forgrunnen prosessen i bakgrunnen:
- Stoppe prosessen ved å skrive
Ctrl+Z
., - Flytt stoppet prosessen i bakgrunnen, ved å skrive inn
bg
.
Holde Bakgrunn Prosesser som Kjører Etter et Skall Ut #
Hvis tilkoblingen din synker eller du logger deg ut av skallet økt på bakgrunn prosessene er avsluttet. Det er flere måter å holde prosessen kjører etter den interaktive shell økten avsluttes.,
En måte er å ta jobben fra shell jobb styre ved hjelp av disown
shell innebygde:
disown
Hvis du har mer enn én bakgrunn jobber, inkluderer %
og jobb-ID-en etter kommandoen:
disown %1
Bekreft at jobben er fjernet fra tabellen over aktive jobber som bruker jobs -l
– kommandoen. For å vise alle prosesser som kjører, inkludert fornektet bruk ps aux
– kommandoen.,
en Annen måte å holde en prosess som kjører etter shell-exit er å bruke nohup
.
nohup
kommando utfører et annet program som er angitt som argument, og ignorerer alle SIGHUP
(legg på) signaler. SIGHUP
er et signal som sendes til en prosess når det kontrollerende terminalen er stengt.
for Å kjøre en kommando i bakgrunnen og bruker nohup
– kommandoen, skriver du:
nohup command &
– kommandoen utgang er omdirigert til nohup.out
– filen.,
nohup: ignoring input and appending output to 'nohup.out'
Hvis du logger ut eller lukker terminal, prosessen er ikke avsluttet.
Alternativer #
Det finnes en rekke programmer som tillater deg å ha flere interaktive sesjoner på samme tid.
– Skjermen #
Skjerm eller GNU-Skjermen er en terminal multiplexer program som lar deg starte en skjerm session og åpne en rekke vinduer (virtuelle terminaler) inne i den økten. Prosesser som kjører på Skjermen vil fortsette å kjøre når vinduet er ikke synlig selv om du blir frakoblet.,
Tmux #
Tmux er et moderne alternativ til GNU-skjermen. Med Tmux, kan du også opprette en økt og åpne flere vinduer inne på at økt. Tmux økter er vedvarende, noe som betyr at programmer som kjører i Tmux fortsette å kjøre selv om du lukk terminal.
Konklusjon #
for Å kjøre en kommando i bakgrunnen, inkluderer &
på slutten av kommandoen.
Når du kjører en kommando i bakgrunnen, du trenger ikke å vente til den er ferdig før du kan utføre en annen.