Köra baskommandon i bakgrunden på rätt sätt [Linux]
Alla har varit där: du vill köra ett terminalprogram och hålla det igång. Problemet är att programmet är gammalt eller inte innehåller en funktion som låter den köra som en demon i bakgrunden. Lyckligtvis finns det flera sätt att tvinga program att arbeta i bakgrunden ändå.
Bash kan göra allt på egen hand, och extraprogram behöver inte installeras. Denna artikel kommer att gå över flera sätt att du kan driva terminalprogram i bakgrunden och behålla dem där. Varje metod som anges är bra för sitt eget speciella användningsfall.
Avsluta en kommando med &
Om du vill trycka ett kommando i bakgrunden, är det med &
i slutet ett enkelt sätt att göra det. Det kommer dock med en fångst. Med &
kopplar inte kommandot bort från dig; det trycker bara på det i bakgrunden så att du kan fortsätta använda en terminal.
kommando &
När terminalsessionen är stängd, avslutas kommandot. Att använda &
är bra om du behöver trycka lite på lite, men förvänta dig inte att det ska fortsätta för alltid.
& Efter en kommando, förneka sedan det
Kör ett kommando med bara &
skjuter det på baksidan och håller det igång så länge som terminalfönstret är öppet. Om du vill se att detta kommando körs i konstant, även om din terminalsession slutar, kan du använda disown
kommandot.
För att använda den här metoden, börja först att lägga till en &
.
kommando &
Som nämnts ovan använder du &
pushar det här kommandot i bakgrunden men tar inte bort det från din användare. Du kan verifiera detta genom att skriva jobs
i terminalen. Det kommer att visa kommandot som körs i bakgrunden.
disown
bara disown
i skalet, och det gör just det (och du kan återigen verifiera detta med kommandot jobs
).
& Efter en kommando med / dev / null
Lägga till &
efter ett kommando trycker du på ett kommando i bakgrunden, men som ett resultat fortsätter bakgrundskommandot att skriva ut meddelanden till terminalen när du använder den. Om du vill förhindra detta, överväga omdirigera kommandot till /dev/null
.
kommando &> / dev / null &
Detta förhindrar inte att kommandot stängs när terminalen stängs. Men som nämnts ovan är det möjligt att använda disown
att förneka körkommandot bort från användaren.
Nohup, med & and / dev / null
Till skillnad från tidigare kommandon kan du använda nohup
med att köra ett kommando i bakgrunden och hålla det igång. Hur? Nohup förbi HUP-signalen (signalupphängning), vilket gör det möjligt att köra kommandon i bakgrunden även när terminalen är avstängd. Kombinera detta kommando med omdirigering till /dev/null
(för att förhindra nohup att skapa en nohup.out-fil), och allt går till bakgrunden med ett kommando.
nohup kommando &> / dev / null &
Slutsats
De flesta terminalprogram på Linux idag har funktioner inbyggda för att låta dem springa i bakgrunden med liten ansträngning. Samtidigt kan moderna init-system (som systemd) tillåta användare att starta program som tjänster vid start eller när som helst.
Ändå saknar vissa program på Linux möjligheten att springa som en demon eller integrera med moderna init-system. Detta är ett verkligt besvär, men det är förståeligt, eftersom alla utvecklare inte har färdighet eller tid att lägga till nya funktioner.
Lyckligtvis är kommandon som nohup
eller disown
fortfarande verklighet och kan fortfarande stänga klyftan i att flytta program som detta till bakgrunden. De är inte perfekta eller snygga, men de får jobbet gjort vid behov.
Hur flyttar du löpande terminalprogram i bakgrunden? Berätta för oss nedan!
Bildkredit: En terminal-fyra skärmar