Running Bash Commands i bakgrunnen på den riktige måten [Linux]
Alle har vært der: du ønsker å kjøre et terminalprogram og holde det i gang. Problemet er at dette programmet er gammelt eller ikke inneholder en funksjon som gjør det mulig å løpe som en demon i bakgrunnen. Heldigvis finnes det flere måter å tvinge programmer til å arbeide i bakgrunnen uansett.
Bash kan gjøre alt på egenhånd, og ekstraprogrammer trenger ikke installeres. Denne artikkelen vil gå over flere måter som du kan presse terminalprogrammer i bakgrunnen og holde dem der. Hver metode som er oppført, er bra for sitt eget spesialbrukstilfelle.
Slutt en kommando med &
Hvis du vil skyve en kommando inn i bakgrunnen, bruker &
i slutten en enkel måte å gjøre det på. Det kommer med en fangst, skjønt. Bruke &
fjerner ikke kommandoen vekk fra deg; det skyver det bare i bakgrunnen, slik at du kan fortsette å bruke en terminal.
kommandoen &
Når terminalsesjonen er stengt, avslutter kommandoen. Bruk &
er bra hvis du trenger å skyve noe av for litt, men forvent ikke at det skal fortsette for alltid.
& Etter en kommando, så avslå det
Kjører en kommando med bare &
skyver den av til baksiden og holder den i gang så lenge terminalvinduet er åpent. Hvis du imidlertid ønsker å holde denne kommandoen kjørt i konstant, selv når terminalen din slutter, kan du bruke disown
kommandoen.
For å bruke denne metoden, begynner du først å legge til en &
.
kommandoen &
Som nevnt ovenfor bruker &
pusher denne kommandoen i bakgrunnen, men fjerner den ikke fra brukeren din. Du kan bekrefte dette ved å skrive jobs
inn i terminalen. Det vil vise kommandoen som kjører i bakgrunnen.
Bare skriv disown
i skallet, og det vil bare gjøre det (og du kan nok en gang bekrefte dette med kommandoen jobs
).
& Etter en kommando med / dev / null
Legge til &
etter en kommando vil skyve en kommando inn i bakgrunnen, men som følge av dette vil bakgrunnskommandoen fortsette å skrive ut meldinger til terminalen mens du bruker den. Hvis du ønsker å forhindre dette, bør du tenke på omdirigering av kommandoen til /dev/null
.
kommando &> / dev / null &
Dette forhindrer ikke at kommandoen lukkes når terminalen lukkes. Men som nevnt ovenfor, er det mulig å bruke disown
å forkaste kjører kommandoen bort fra brukeren.
Nohup, med & og / dev / null
I motsetning til tidligere kommandoer kan du bruke nohup
til å kjøre en kommando i bakgrunnen og holde den i gang. Hvordan? Nohup bypasser HUP signalet (signal henger opp), noe som gjør det mulig å kjøre kommandoer i bakgrunnen selv når terminalen er slått av. Kombiner denne kommandoen med omdirigering til /dev/null
(for å hindre nohup fra å lage en nohup.out-fil), og alt går til bakgrunnen med en kommando.
nohup kommando &> / dev / null &
Konklusjon
De fleste terminalprogrammer på Linux har i dag funksjoner som er bygd inn slik at de kan løpe i bakgrunnen med liten innsats. Sammen med det, kan moderne init systemer (som systemd) tillate brukere å starte programmer som tjenester ved oppstart eller når.
Likevel mangler noen programmer på Linux muligheten til å kjøre som en demon eller integrere med moderne init-systemer. Dette er en ekte uleilighet, men er forståelig, da ikke alle utviklere har ferdigheter eller tid til å legge til nye funksjoner.
Heldigvis, kommandoer som nohup
eller disown
er fortsatt en realitet og kan likevel lukke gapet i å flytte programmer som dette til bakgrunnen. De er ikke perfekte eller fancy, men de får jobben når det trengs.
Hvordan beveger du løpende terminalprogrammer inn i bakgrunnen? Fortell oss nedenfor!
Bilde Kreditt: En terminal-fire skjermer