Hvordan vente på at en spesifikk prosess skal fullføres i Linux?

Hvordan vente på at en spesifikk prosess skal fullføres i Linux?

Vi har en ventekommando over Linux for å vente på at en eller flere enn en prosess skal fullføres i systemet. Den allsidige ventekommandoen over Linux lar oss finne ut når en spesifikk prosess er fullført. Oppsigelsesstatusen vil bli returnert som et resultat, slik at vi kan identifisere om prosessen er vellykket med å avslutte eller mislykkes av en eller annen grunn. Ventekommandoen fortsetter å løpe mens den venter på at spesifikke bakgrunnsoppgaver skal fullføres. Linux Wait -kommandoen brukes i brukssakene nedenfor for å vise hvordan den fungerer.

Eksempel nr. 1: Bruke en vent -kommando for bash -prosess.

Vi bruker vent -kommandoen for å spesifisere når et skripts bakgrunnsprosess må begynne å behandle. I det følgende bash -skriptet har vi brukt Echo -kommandoen som skriver ut uttalelsen "bakgrunnsprosess", noe som betyr at bakgrunnsprosessen er behandling. Med denne ekkokommandoen har vi brukt symbolet “&” som brukes til å kjøre en kommando i bakgrunnen. Deretter har vi igjen ansatt de to Echo -kommandoene som skriver ut uttalelsen “Første oppgave” og “Second Task”.

Etter det påkalte vi ventetiden som vil ta en pause for å vente på at bakgrunnsprosessen skal avsluttes etter den andre prosessen før vi går videre til den tredje prosessen. Den tredje oppgaven vil bli behandlet ved avslutning av bakgrunnsprosessen som vil bli avsluttet når som helst.

#!/bin/bash
ekko bakgrunnsprosess og
ekko første oppgave
ekko andre oppgave
vente
ekko tredje oppgave

Utgangen fra ventekommandoen viste at etter fullført den første oppgaven og andre oppgaver, behandles den tredje oppgaven. Ventekommandoen genererer uttalelsen "bakgrunnsprosess" når første og andre oppgaver tar tid å fullføre.

Linux@virtualbox: ~ bash ./Bash.sh
Første oppgave
Andre oppgave
Bakgrunnsprosess
Tredje oppgave

Eksempel nr. 2: Bruke en ventekommando for bash flere prosesser.

Mens det tidligere bash -skriptet bruker Wait -kommandoen til den enkelt prosessen, bruker vi Wait -kommandoen i bash -skriptet for flere prosesser som skal utføres. Når ventekommandoen brukes med -N -flagget, venter den bare på den innledende prosessen blant bakgrunnsprosessene. Bash -skriptet er gitt nedenfor der vi først distribuerte de tre søvnkommandoene som er satt med spesifikke verdier. Sleep -kommandoen er definert med tegnet “&” som vi allerede har diskutert tidligere, noe som indikerer at bakgrunnsprosessene kjører.

Den første søvnkommandoen indikerer at bakgrunnsprosessen trenger "10" sekunder å fullføre. Bakgrunnsprosessen trenger “5” sekunder for fullføring, og den tredje søvnkommandoen krever “3” sekunder for utførelsen av bakgrunnsprosessen. Deretter kalles Wait -N -kommandoen som bare venter på den korteste prosessen. Her tar den korteste prosessen tre sekunder å fullføre blant de andre prosessene. Når den korteste prosessen er fullført, vil Echo -uttalelsen "fullført den første jobben" bli skrevet ut.

Etter det har vi igjen distribuert vent -kommandoen. Dette vil igjen vente på den mindre tidkrevende prosessen. Nå tar den mindre tidkrevende prosessen fem sekunder ettersom prosessen med tid tre sekunder utføres. Etter å ha ventet i fem sekunder av prosessen, vises den neste Echo -uttalelsen "Fullført neste jobb". Den neste kommandoen over Wait bruker ikke noe flagg som betyr at denne ventekommandoen vil vente på at alle prosessene skal fullføres først, og deretter viser den Echo -setningen "Fullførte all jobb".

#!/bin/bash
Sov 10 &
Sov 5 &
Sov 3 &
Vent -n
ekko “Fullførte første jobb.”
Vent -n
ekko “fullført neste jobb.”
vente
ekko “Fullførte all jobb.”

Resultatene fra bash -skriptet til flere prosesser med ventekommandoen ovenfor vises på følgende bash shell -skjerm. Ventetiden med alternativet -N -kommandoer pause i 3 og 5 sekunder, og det er hvor lang tid det tar for den første og neste jobben å fullføre ventekommandoene, og deretter pause i ti sekunder, og det er tiden det tar for den gjenværende bakgrunnen prosesser for å fullføre.

Linux@virtualbox: ~ bash ./Bash.sh
“Fullført første jobb.”
“Fullført neste jobb.”
“Fullførte all jobb.”

Eksempel nr. 3: Bruke en vent -kommando for bash flere prosesser med prosess -ID.

Når vi har å gjøre med flere prosesser i Bash -skriptet med Wait -kommandoen, er prosess -ID nyttig for å identifisere prosessen. Her i bash -skriptet har vi brukt Echo -kommandoen til å skrive ut uttalelsen “Process1 i 3 sekunder”. Deretter brukte vi og operatøren “&&” for å angi en annen kommando som er søvnkommandoen. Søvnkommandoen tar en verdi av “3” som er tiden for at bakgrunnsprosessen skal fullføres. Deretter erklærte vi variabelen “ProcessID” som ga en “$!”Verdi. Symbolet “$!”Får prosess -ID for den sist utførte kommandoen. Den sist utførte kommandoen som tar "3" sekunder lagres i variabelen "ProcessID".

Nå har vi spesifisert en annen kommando av Echo som skriver ut “prosess1 i 5 sekunder” sammen med søvnkommandoen. Søvnkommandoen tar fem sekunder for fullføringen av den andre bakgrunnsprosessen. Deretter trykket vi gjeldende tid ved å bruke bashjernen til bash. Deretter brukes ventekommandoen der variabelen "prosessid" er satt som et argument. Ventekommandoen holder nå ventetiden for prosessID -variabelen som er tre sekunder.

Etter tre sekunder vil den gjenværende prosessen med bashskriptet være fullført. Legg merke til at vi har en annen ventekommando som sendes med tegnet “$!”Som et argument da vil den siste ekko -uttalelsen bli utført. for å hente den siste Kommandoprosess -ID.

#!/bin/bash
ekko "prosess1 for 3 sekunder" && søvn 3 &
ProsessID = $!
ekko "prosess1 for 5 sekunder" && søvn 5 &
ekko "nåværende tid $ (dato +%t)"
Vent $ prosessID
ekko "prosess1 termineringstid $ (dato +%t) med exit status $?""
vent $!
ekko "prosess2 termineringstid $ (dato +%t) med exit status $?""

Utgangen viste først fullføringen av prosessen sammen med tiden for fullføring. Deretter fullføres den nåværende tidsprosessen. Etter det skjedde ventetiden, og deretter ble neste Echo -kommando utført som viste avkjøringsstatusverdien null sammen med termineringstiden. Verdien Zero Exit -status representerer at prosessen blir avsluttet med hell. Så igjen, oppstår pausen for tiden den siste prosessen tar å fullføre, og den siste uttalelsen vises.

Linux@virtualbox: ~ bash ./Bash.sh
Prosess1 i 5 sekunder
Prosess1 i 3 sekunder
Nåværende tid 00:31:20
Prosess1 Oppsigelsestid 00:31:23 Med utgangsstatus 0
Prosess2 Avslutningstid 00:31:25 Med utgangsstatus 0

Konklusjon

Artikkelen gir en måte å vente på at en spesifikk prosess skal fullføres i Linux. Vi har brukt ventekommandoen for å vente på løpeprosessen. Vi bruker først Wait -kommandoen for at enkeltprosessen skal vente, og så har vi ringt ventekommandoen for flere prosesser. Deretter kalles ventekommandoen over prosess -IDen for å få prosess -ID for flere prosesser.