AllInfo

Hoe om te Rennen en te beheren Achtergrond Processen op Linux

Fatmawati Achmad Zaenuri/Shutterstock.com

Het gebruik van de Bash shell in Linux te beheren voorgrond en achtergrond processen. U kunt gebruik maken van Bash ‘ s job control functies en signalen geeft u meer flexibiliteit bij het uitvoeren van opdrachten. Wij laten u zien hoe.

Alles Over Processen

Wanneer een programma wordt uitgevoerd in een Linux-of Unix-achtig besturingssysteem te zijn, een proces is begonnen. “Proces” is de naam voor de interne representatie van de uitvoering van het programma in het geheugen van de computer. Er is een proces voor elk actief programma. In feite, er is een proces voor bijna alles dat op uw computer wordt uitgevoerd. Dat omvat de componenten van de grafische desktop omgeving (GDE), zoals GNOME of KDE, en het systeem daemons die worden gestart bij het opstarten.

Waarom bijna alles dat wordt uitgevoerd? Goed, Bash ingebouwde-ins, zoals cd, pwd en alias niet nodig om een proces opgestart (of “voortgebracht”) wanneer ze worden uitgevoerd. Bash voert deze opdrachten binnen het exemplaar van de Bash shell op te geven die wordt uitgevoerd in het terminal venster. Deze opdrachten worden snel, juist omdat ze niet nodig om een proces gestart voor hen uit te voeren. (U kunt helpen type in een terminal scherm om de lijst te zien van Bash ingebouwde-ins.)

Processen worden uitgevoerd op de voorgrond, in welk geval dan nemen ze je terminal tot ze voltooid hebben, of ze kunnen worden uitgevoerd in de achtergrond. Processen die draaien in de achtergrond niet domineren het terminal-venster en u kunt blijven werken. Of tenminste, ze niet domineren het terminal venster als ze niet het genereren van uitvoer.

Een Rommelige Voorbeeld

We beginnen met een simpel ping-trace uitgevoerd. We gaan pingen van de How-To Geek domein. Dit wordt uitgevoerd als een voorgrond proces.

ping www.howtogeek.com

We krijgen de verwachte resultaten, in het terminal venster. We kunnen dan ook niet anders in het terminal-venster terwijl ping wordt uitgevoerd. Voor het beëindigen van de opdracht, druk op Ctrl+C.

Ctrl+C

Het zichtbare effect van de Ctrl+C) is gemarkeerd in de screenshot. ping geeft een korte samenvatting en stopt dan.

Laten we dat herhalen. Maar dit keer zullen we druk op Ctrl+Z in plaats van Ctrl+C. De taak niet verbroken zal worden. Het zal een taak op de achtergrond. Krijgen We controle van de terminal-venster aan ons worden geretourneerd.

ping www.howtogeek.com
Ctrl+Z

Het zichtbare effect van het drukken op Ctrl+Z is gemarkeerd in de screenshot.

Deze keer zijn we vertelde het proces is gestopt. Gestopt betekent niet beëindigd. Het is als een auto op een stop-teken. We hebben nog niet afgedankt en weggegooid. Het is nog steeds op de weg, stationaire, te wachten om te gaan. Het proces is nu een achtergrond taak.

De banen opdracht wordt een lijst met de taken die zijn begonnen in de huidige terminal sessie. En omdat de banen zijn (onvermijdelijk) processen, kunnen we ook gebruik je het ps commando om ze te zien. Laten we gebruik maken van beide commando ‘ s en vergelijk de resultaten. We gebruiken de T optie (terminal) optie om alleen een lijst van de processen die worden uitgevoerd in deze terminal venster. Let op dat er geen noodzaak is voor het gebruik van een koppelteken – met de-T optie.

taken
ps T

De banen commando vertelt ons:

Het ps commando vertelt ons:

Dit zijn de gemeenschappelijke waarden voor de kolom STAT:

De waarde in de kolom STAT kan worden gevolgd door een van deze extra indicatoren:

We kunnen zien dat Bash is een staat van de Ss. De hoofdletter “S” vertel ons de Bash-shell is aan het slapen, en het is onderbreekbare. Zodra wij het nodig hebben, het zal reageren. De kleine letter “s”, vertelt ons dat de shell is een sessie-leider.

De ping-opdracht is een staat van T. Dit vertelt ons dat ping is gestopt door een job controle signaal. In dit voorbeeld, dat was de Ctrl+Z we gebruikt om het in de achtergrond.

De ps T commando heeft een staat van R, dat staat voor het uitvoeren van. De + geeft aan dat dit proces is een lid van de voorgrond van de groep. Dus de ps T commando wordt uitgevoerd op de voorgrond.

De bg Opdracht

De bg-opdracht wordt gebruikt bij het hervatten van een achtergrond proces. Het kan gebruikt worden met of zonder een opdrachtnummer. Als u het gebruiken zonder een opdrachtnummer de standaardwaarden van de job op de voorgrond gebracht. Het proces loopt nog steeds op de achtergrond. Kunt u geen ingang aan het.

Als we het probleem van de bg opdracht, hervatten we onze opdracht ping:

bg

De ping-opdracht wordt hervat en zien we de bladeren van de uitvoer in het venster terminal eens te meer. De naam van het commando dat opnieuw is opgestart, wordt op het scherm getoond. Dit wordt benadrukt in de screenshot.

Maar we hebben een probleem. De taak wordt uitgevoerd in de achtergrond en zal het niet accepteren ingang. Dus hoe kunnen we dat voorkomen? Ctrl+C doet niets. We zien het als we het type, maar de achtergrond taak niet ontvangen van die toetsaanslagen, zodat het houdt pingen vrolijk weg.

In feite zitten we nu in een vreemde gemengde modus. We kunnen typ in het terminal venster, maar wat we typen is snel weggevaagd door de bladeren van de uitvoer van de opdracht ping. Alles wat we type van kracht in de foregound.

Om te stoppen met onze taak op de achtergrond moeten we naar de voorgrond te verplaatsen en druk op stop.

De fg Opdracht

De fg commando brengt een taak op de achtergrond naar de voorgrond te halen. Net als de bg opdracht, kan worden gebruikt met of zonder een opdrachtnummer. Te gebruiken met een job-nummer betekent dat het zal werken op een specifieke taak. Als het wordt gebruikt zonder een opdrachtnummer de laatste opdracht die is verzonden naar de achtergrond wordt gebruikt.

Als we het type fg onze ping-opdracht naar de voorgrond te brengen. De tekens typen we zijn gemengd met de uitvoer van de opdracht ping, maar ze worden bediend door de shell als ze waren ingevoerd op de opdrachtregel, zoals gewoonlijk. En in feite, van de Bash-shell ‘ s point of view, dat is precies wat er is gebeurd.

fg

En nu hebben we de ping-opdracht wordt uitgevoerd op de voorgrond we kunnen weer gebruik Ctrl+C om het te doden.

Ctrl+C

We Moeten het Verzenden van de Juiste Signalen

Dat was niet bepaald mooi. Kennelijk is het uitvoeren van een proces in de achtergrond werkt het beste wanneer het proces niet het produceren van output en vereist geen ingang.

Maar, rommelig of niet, ons voorbeeld heeft doen:

Wanneer u gebruik Ctrl+C en Ctrl+Z , u het verzenden van signalen naar het proces. Deze zijn afgekorte manieren van het gebruik van de kill-opdracht. Er zijn 64 verschillende signalen die doden kan sturen. Gebruik kill-l op de commando-regel om een lijst van hen. doden is niet de enige bron van deze signalen. Sommigen van hen zijn automatisch verhoogd door andere processen binnen het systeem

Hier zijn een aantal van de meest gebruikte.

We moeten gebruik maken van de kill-opdracht tot de uitgifte van signalen die niet van toets combinaties die aan hen zijn toegewezen.

Verder Job Control

Een proces dat zich in de achtergrond met behulp van Ctrl+Z is geplaatst in de gestopte status. We moeten gebruik maken van de bg opdracht om te beginnen met het weer te lopen. Om de lancering van een programma als een lopend achtergrond proces is eenvoudig. Voeg een ampersand & naar het einde van de opdrachtregel.

Hoewel het het beste is dat de achtergrond processen niet schrijven naar het terminal-venster, gaan we gebruiken voorbeelden die dat doen. We moeten iets in de screenshots die we kunnen verwijzen. Dit commando start een eindeloze lus als een achtergrond proces:

hoewel true; do echo “How-To Geek-Loop-Proces”; sleep 3; gedaan &

Ons is verteld dat de baan nummer en proces-ID id van het proces. Onze taak nummer 1, en de proces-id is 1979. We gebruiken deze gegevens om de controle van het proces.

De output van onze eindeloze lus begint te verschijnen in het terminal-venster. Zoals eerder, we kunnen gebruik maken van de commando-regel, maar de commando ‘ s die we geven worden afgewisseld met de output van het kringloopproces.

ls

Om te stoppen met onze methode kunnen we gebruik maken van de banen om ons eraan te herinneren wat de job-nummer is, en gebruik daarna te doden.

werkgelegenheid meldt dat ons proces is taak nummer 1. Gebruik dat nummer met doden we moeten laten voorafgaan met een procent-teken %.

taken
kill %1

doden stuurt de SIGTERM signaal, signaal nummer 15, het proces en het programma wordt beëindigd. Wanneer de Enter-toets naast ingedrukt, wordt de status van de afdruktaak wordt weergegeven. Het toont een overzicht van het proces als “beëindigd.” Als het proces niet reageren op de kill-commando kunt u het omhoog een inkeping. Gebruik doden, met het SIGKILL signaal nummer 9. Zet gewoon de nummer 9 tussen de doden opdracht van het opdrachtnummer.

doden 9 %1

Dingen die We hebben Gedekt

GERELATEERD: Hoe om te Doden Processen Van de Linux Terminal

LEES VERDER

Exit mobile version