Android

Slik kjører du Linux-kommandoer i bakgrunnen

Disk and Memory usage commands - df, du and free linux commands tutorial | Linux Tutorial #32

Disk and Memory usage commands - df, du and free linux commands tutorial | Linux Tutorial #32

Innholdsfortegnelse:

Anonim

Når du kjører en kommando i terminalen, må du vente til kommandoen er fullført før du kan angi en annen. Dette kalles å kjøre kommandoen i forgrunnen eller forgrunnen. Når en prosess kjører i forgrunnen, opptar den skallet ditt, og du kan samhandle med det ved å bruke inndataenhetene.

Hva om kommandoen tar lang tid å fullføre, og du vil kjøre andre kommandoer i mellomtiden? Du har flere alternativer til disposisjon. Det mest åpenbare og greie alternativet er å starte en ny skalløkt og kjøre kommandoen i den. Et annet alternativ er å kjøre kommandoen i bakgrunnen.

En bakgrunnsprosess er en prosess / kommando som startes fra en terminal og kjøres i bakgrunnen, uten interaksjon fra brukeren., vil vi snakke om bakgrunnsprosessene er Linux. Vi vil vise deg hvordan du starter en kommando i bakgrunnen, og hvordan du kan fortsette prosessen etter at skalløkten er avsluttet.

Kjør en Linux-kommando i bakgrunnen

Hvis du vil kjøre en kommando i bakgrunnen, legger du til ampersand-symbolet ( & ) på slutten av kommandoen:

command &

Skalljobb-ID (omgitt av parenteser) og prosess-ID vil bli skrevet ut på terminalen:

25177

Du kan ha flere prosesser som kjører i bakgrunnen samtidig.

Bakgrunnsprosessen vil fortsette å skrive meldinger til terminalen du påkalte kommandoen fra. For å undertrykke stdout og stderr meldingene bruker du følgende syntaks:

command > /dev/null 2>&1 &

>/dev/null 2>&1 betyr omdirigere stdout til /dev/null og stderr til stdout .

Bruk jobberverktøyet til å vise status for alle stoppede og bakgrunnsjobber i den nåværende shell-økten:

jobs -l

Utdataene inkluderer jobbnummer, prosess-ID, jobbtilstand og kommandoen som startet jobben:

+ 25177 Running ping google.com &

For å bringe en bakgrunnsprosess i forgrunnen, bruk fg kommandoen:

fg

fg %1

For å avslutte bakgrunnsprosessen, bruk kill kommandoen etterfulgt av prosess-ID:

kill -9 25177

Flytt en forgrunnsprosess til bakgrunn

Slik flytter du en kjørende forgrunnsprosess i bakgrunnen:

  1. Stopp prosessen ved å skrive Ctrl+Z Flytt den stoppede prosessen til bakgrunnen ved å skrive bg .

Hold bakgrunnsprosesser i gang etter at et skall er avsluttet

Hvis tilkoblingen din synker eller du logger ut av skalløkten, avsluttes bakgrunnsprosessene. Det er flere måter å holde prosessen i gang etter at den interaktive skalløkten er avsluttet.

En måte er å fjerne jobben fra skallets jobbkontroll ved hjelp av det disown skallet som er innebygd:

disown

disown %1

Bekreft at jobben blir fjernet fra tabellen over aktive jobber ved å bruke kommandoen jobs -l . Bruk ps aux kommandoen for å liste alle prosesser som kjører, inkludert den ikke-benevnte.

En annen måte å holde en prosess i gang etter nohup er å bruke nohup .

nohup kommandoen kjører et annet program spesifisert som sitt argument og ignorerer alle SIGHUP (hangup) signaler. SIGHUP er et signal som sendes til en prosess når kontrollterminalen er stengt.

Hvis du vil kjøre en kommando i bakgrunnen ved å bruke nohup kommandoen, skriver du inn:

nohup command &

Kommandoutgangen omdirigeres til filen nohup.out .

nohup: ignoring input and appending output to 'nohup.out'

Alternatives

Det er en rekke programmer som lar deg ha flere interaktive økter samtidig.

Skjerm

Screen eller GNU Screen er et terminalmultiplekserprogram som lar deg starte en skjermøkt og åpne et hvilket som helst antall vinduer (virtuelle terminaler) inne i den økten. Prosesser som kjører i skjermbildet vil fortsette å kjøre når vinduet deres ikke er synlig, selv om du blir koblet fra.

Tmux

Tmux er et moderne alternativ til GNU-skjerm. Med Tmux kan du også opprette en økt og åpne flere vinduer i den økten. Tmux økter er vedvarende, noe som betyr at programmer som kjører i Tmux fortsetter å kjøre selv om du stenger terminalen.

Konklusjon

Hvis du vil kjøre en kommando i bakgrunnen, inkluderer & på slutten av kommandoen.

Når du kjører en kommando i bakgrunnen, trenger du ikke å vente til den er ferdig før du kan utføre en annen.

nohup fg bg jobber avslå terminal