Running Bash Commands i baggrunden den rigtige måde [Linux]
Alle har været der: Du søger at køre et terminalprogram og holde det kørende. Problemet er, at dette program er gammelt eller ikke indeholder en funktion, der gør det muligt at køre som en dæmon i baggrunden. Heldigvis er der flere måder at tvinge programmer til at arbejde i baggrunden alligevel.
Bash kan gøre alt på egen hånd, og ekstra programmer behøver ikke installeres. Denne artikel vil gå på flere måder, så du kan skubbe terminalprogrammer i baggrunden og holde dem der. Hver af de metoder, der er angivet, er gode til sin egen specialbrugssag.
Afslut en kommando med &
Hvis du vil skubbe en kommando ind i baggrunden, er det ved hjælp af &
i slutningen en nem måde at gøre. Det kommer dog med en fangst. Brug &
fjerner ikke kommandoen væk fra dig; det skubber det bare i baggrunden, så du kan fortsætte med at bruge en terminal.
kommandoen &
Når terminalsessionen er lukket, slutter kommandoen. Brug &
er god, hvis du har brug for at skubbe noget ud for lidt, men forvent ikke at fortsætte for evigt.
& Efter en kommando, så afsked det
Kører en kommando med bare &
skubber den ud til bagsiden og holder den kørende, så længe terminalvinduet er åbent. Hvis du imidlertid ønsker at holde denne kommando kørende konstant, selvom din terminalsession slutter, kan du bruge disown
kommandoen.
For at bruge denne metode skal du først starte med at tilføje en &
.
kommandoen &
Som nævnt ovenfor bruger &
pusher denne kommando i baggrunden, men frigør den ikke fra din bruger. Du kan bekræfte dette ved at skrive jobs
i terminalen. Det viser kommandoen, der kører i baggrunden.
Bare skriv disown
i skallen, og det vil bare gøre det (og du kan igen bekræfte dette med kommandoen jobs
).
& Efter en kommando med / dev / null
Tilføjelse &
efter en kommando vil skubbe en kommando ind i baggrunden, men som følge heraf vil baggrundskommandoen fortsætte med at udskrive beskeder i terminalen, mens du bruger den. Hvis du søger for at forhindre dette, skal du overveje omdirigering af kommandoen til /dev/null
.
kommando &> / dev / null &
Dette forhindrer ikke kommandoen at lukke, når terminalen lukker. Men som nævnt ovenfor er det muligt at benytte disown
at forkaste løbe kommandoen væk fra brugeren.
Nohup, med & og / dev / null
I modsætning til de foregående kommandoer kan du ved hjælp af nohup
køre en kommando i baggrunden og holde den kørende. Hvordan? Nohup omgår HUP signalet (signal ophængt), hvilket gør det muligt at køre kommandoer i baggrunden, selvom terminalen er slukket. Kombiner denne kommando med omdirigering til /dev/null
(for at forhindre nohup i at lave en nohup.out-fil), og alt går til baggrunden med en kommando.
nohup kommando &> / dev / null &
Konklusion
De fleste terminalprogrammer på Linux har i dag indbyggede funktioner, så de kan køre i baggrunden med lidt indsats. Samtidig kan moderne init systemer (som systemd) tillade brugere at starte programmer som tjenester ved opstart eller når som helst.
Men nogle programmer på Linux mangler evnen til at køre som en dæmon eller integrere med moderne init systemer. Dette er en reel besvær, men det er forståeligt, da ikke alle udviklere har evnen eller tid til at tilføje nye funktioner.
Heldigvis er kommandoer som nohup
eller disown
stadig en realitet og kan stadig lukke kløften i at flytte programmer som dette til baggrunden. De er ikke perfekte eller fancy, men de får jobbet gjort, når det er nødvendigt.
Hvordan flytter du løbende terminalprogrammer i baggrunden? Fortæl os nedenfor!
Billedkredit: En terminal-fire skærme