Hur man kör Bash-kommandon i bakgrunden i Linux 1

Hur man kör Bash-kommandon i bakgrunden i Linux

Det finns inget mer irriterande än att köra ett kommando i din terminal och låta det köras i minuter, ibland timmar, och inte kunna använda din terminal igen. Visst, du kan använda flikar, men det är en klumpig lösning, och det är inte alltid optimalt eftersom du kanske vill se uppdateringar medan du arbetar. Här visar vi dig några olika sätt att köra bash-kommandon i bakgrunden i Linux.

Avsluta ett kommando med &

Om du vill trycka ett kommando i bakgrunden, använd & i slutet är ett enkelt sätt att göra det. På så sätt kan du utfärda ett kommando i bakgrunden och fortsätta att använda din terminal medan den körs. Det kommer dock med en hake. Använder sig av & kopplar inte bort kommandot från dig; den skjuter bara in den i bakgrunden. Detta betyder att medan du försöker använda terminalen, allt som kommandot vill trycka till STDOUT eller STDERR kommer fortfarande att skrivas ut, vilket kan vara distraherande.

När terminalsessionen är stängd avslutas kommandot. Du kan också döda kommandot genom att utfärda jobs kommando, hitta numret på kommandot som körs och döda det med kill kommando. Den syntaxen är som följer:

Skärmdump från 2021 01 14 16 21 48

Använder sig av & är bra om du behöver trycka bort något ett tag men förvänta dig inte att det ska fortsätta för alltid.

& Efter ett kommando, förneka det sedan

Kör ett kommando med bara & skjuter av den bakåt och håller den igång så länge terminalfönstret är öppet. Om du däremot vill hålla det här kommandot igång konstant, även när din terminalsession slutar, kan du använda disown kommando.

För att använda den här metoden, börja med att lägga till en &.

Som nämnts ovan, med hjälp av & skjuter detta kommando till bakgrunden men kopplar det inte bort från din användare. Du kan verifiera detta genom att skriva jobs in i terminalen. Det kommer att visa kommandot som körs i bakgrunden som vi såg tidigare.

Bara Skriv disown in i skalet, och det kommer att göra just det. (Och du kan återigen verifiera detta med jobs kommando.)

Skärmdump från 2021 01 14 16 26 01
Du kan bara urskilja disown kommando där inne

Nu kan du stänga din terminal och fortsätta om dagen. Det kommer fortfarande att leda saker till STDOUT eller STDERR, men när du väl lämnar och öppnar din terminal igen, kommer du inte att se något där. Du kan hitta kommandot igen med top eller ps kommandon och döda den med kill kommando.

Skärmdump från 2021 01 14 16 28 42
Det avvisade jobbet är det andra, med PID 16238.

& Efter ett kommando med /dev/null

Lägger till & efter ett kommando kommer ett kommando att skjutas till bakgrunden, men som ett resultat kommer bakgrundskommandot att fortsätta att skriva ut meddelanden i terminalen när du använder den. Om du vill förhindra detta, överväg att omdirigera kommandot till /dev/null.

Skärmdump från 2021 01 14 16 31 33

Detta hindrar inte kommandot från att stängas när terminalen stänger. Men som nämnts ovan är det möjligt att använda disown för att avvisa körkommandot från användaren. Du kan också döda den i någon av metoderna som nämns ovan om du inte vill att den ska köras längre.

Nohup, med & och /dev/null

Till skillnad från de tidigare kommandona använder du nohup låter dig köra ett kommando i bakgrunden och hålla det igång. Hur? nohup förbigår HUP-signalen (signalen hänger upp), 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 att nohup gör en nohup.out-fil), och allt går till bakgrunden med ett kommando.

Skärmdump från 2021 01 14 16 32 43

De flesta terminalprogram på Linux idag har funktioner inbyggda så att de kan köras i bakgrunden med liten ansträngning. Tillsammans med det kan moderna init-system (som systemd) tillåta användare att starta program som tjänster vid uppstart eller när som helst.

Ändå saknar vissa program på Linux förmågan att köras som en demon eller integreras med moderna init-system. Detta är ett verkligt besvär men är förståeligt, eftersom inte alla utvecklare har förmågan eller tiden att lägga till nya funktioner.

Lyckligtvis kommandon som nohup eller disown är fortfarande en realitet och kan täppa till luckan i att flytta program som detta till bakgrunden. De är inte perfekta eller snygga, men de får jobbet gjort när det behövs.

Om du gillade den här Linux-artikeln, se till att kolla in lite av vårt andra Linux-innehåll, som hur du ansluter ditt Google-konto till GNOME Shell, de bästa Linux-distroerna för Windows-användare och LS-kommandon du behöver veta.

Stöd vårt arbete ❤️

Om du gillade den här artikeln, överväg att lämna dricks för att hjälpa oss fortsätta publicera bra innehåll.

Säker betalning med PayPal
Moyens I/O Staff har motiverat dig och gett dig råd om teknik, personlig utveckling, livsstil och strategier som hjälper dig.