Jak czekać, aż określony proces ukończy w Linux?

Jak czekać, aż określony proces ukończy w Linux?

Mamy polecenie oczekiwania Linuksa, aby czekać na ukończenie jednego lub więcej niż jednego procesu w systemie. Wszechstronne polecenie Linux pozwala nam dowiedzieć się, kiedy konkretny proces zostanie zakończony. W rezultacie status rozwiązania zostanie zwrócony, umożliwiając nam określenie, czy proces zakończy się zakończeniem, czy nie powiódł się z innego powodu. Polecenie Wait nadal działa, gdy czeka na wykonanie określonych zadań w tle. Polecenie Linux Wait jest używane w poniższych przypadkach użycia, aby pokazać, jak funkcjonuje.

Przykład nr 1: Korzystanie z polecenia Wait for Bash pojedynczy proces.

Używamy polecenia Wait, aby określić, kiedy proces w tle skryptu musi rozpocząć przetwarzanie. W poniższym skrypcie Bash użyliśmy polecenia Echo, które drukuje instrukcję „proces tła”, co oznacza, że ​​proces tła jest przetwarzany. Z tym poleceniem echo użyliśmy symbolu „&”, który służy do uruchamiania polecenia w tle. Następnie ponownie zastosowaliśmy dwa polecenia ECHO, które drukują oświadczenie „Pierwsze zadanie” i „Drugie zadanie”.

Następnie powołaliśmy się na oczekiwanie, które zatrzyma się, aby poczekać, aż proces w tle zakończy się po drugim procesie przed przejściem do trzeciego procesu. Trzecie zadanie zostanie przetworzone po zakończeniu procesu w tle, który zostanie zakończony w dowolnym momencie.

#!/bin/bash
Echo Proces w tle i
Echo Pierwsze zadanie
echo drugie zadanie
Czekać
echo trzecie zadanie

Dane wyjściowe polecenia Wait pokazało, że po zakończeniu pierwszego zadania i drugiego zadania, trzecie zadanie jest przetwarzane. Polecenie Wait Generuje instrukcję „Proces tła”, gdy pierwsze i drugie zadania poświęcają trochę czasu.

Linux@VirtualBox: ~ Bash ./Grzmotnąć.cii
Pierwsze zadanie
Drugie zadanie
Proces w tle
Trzecie zadanie

Przykład nr 2: Korzystanie z polecenia Wait for Bash wiele procesów.

Ponieważ wcześniejszy skrypt Bash używa polecenia Wait dla pojedynczego procesu, używamy polecenia Wait w skrypcie BASH, aby wykonać wiele procesów. Gdy polecenie oczekiwania jest używane z flagą -N, czeka tylko na początkowy proces wśród procesów tła. Skrypt Bash jest podany poniżej, w którym po raz pierwszy wdrożyliśmy trzy polecenia snu ustawione z określonymi wartościami. Komenda snu jest zdefiniowana znakiem „&”, który już wcześniej omówiliśmy, co wskazuje, że procesy tła są uruchomione.

Pierwsze polecenie snu wskazuje, że proces tła potrzebuje „10” sekund do ukończenia. Proces w tle wymaga „5” sekund do zakończenia, a trzecie polecenie snu wymaga „3” sekund do wykonania procesu tła. Następnie wywoływane jest polecenie oczekiwania -n, które tylko czeka na najkrótszy proces. Tutaj najkrótszy proces zajmuje trzy sekundy wśród innych procesów. Po zakończeniu najkrótszego procesu wówczas wydrukowano oświadczenie Echo „Ukończone pierwsze zadanie”.

Następnie ponownie wdrożyliśmy polecenie Wait -n. To ponownie będzie czekać na mniej czasochłonny proces. Teraz mniej czasochłonny proces trwa pięć sekund, ponieważ proces czasu jest wykonywany trzy sekundy. Po oczekiwaniu na pięć sekund procesu wyświetli się następny oświadczenie Echo „Zakończone następne zadanie”. Następne polecenie oczekiwania nie używa żadnej flagi, co oznacza, że ​​to polecenie oczekiwania będzie czekać na zakończenie wszystkich procesów, a następnie wyświetla instrukcję Echo „Zakończono całą pracę”.

#!/bin/bash
Sleep 10 &
Sleep 5 &
Sleep 3 &
Poczekaj -n
Echo „Zakończył pierwszą pracę."
Poczekaj -n
Echo „zakończyło następne zadanie."
Czekać
Echo „Zakończył całą pracę."

Wyniki skryptu bash wielu procesów z powyższym poleceniem są wyświetlane na następującym ekranie powłoki bash. Poczekaj z opcją -n poleceń zatrzymuje się na 3 i 5 sekund, czyli ilość czasu potrzebnego do zakończenia poleceń oczekiwania, a następnie zatrzymaj się na dziesięć sekund Procesy do zakończenia.

Linux@VirtualBox: ~ Bash ./Grzmotnąć.cii
„Zakończono pierwszą pracę."
„Zakończony następny zadanie."
„Zakończył całą pracę."

Przykład nr 3: Korzystanie z polecenia Wait for Bash wiele procesów z identyfikatorem procesu.

Kiedy mamy do czynienia z wieloma procesami w skrypcie BASH z poleceniem Wait, identyfikator procesu jest pomocny w zidentyfikowaniu procesu. Tutaj, w skrypcie Bash, użyliśmy polecenia ECHO do wydrukowania instrukcji „Process1 przez 3 sekundy”. Następnie użyliśmy i operatora „&&”, aby ustawić inne polecenie, które jest poleceniem Sleep. Komenda snu ma wartość „3”, która jest czasem, aby proces tła zostanie zakończony. Następnie zadeklarowaliśmy zmienną „procesid”, który zapewnił „$!" wartość. Symbol „$!”Otrzymuje identyfikator procesu ostatniego wykonanego polecenia. Ostatnie wykonane polecenie, które zajmuje „3” sekundy, jest przechowywane w zmiennej „procesd”.

Teraz określiliśmy kolejne polecenie echa, które drukuje „proces1 przez 5 sekund” wraz z poleceniem snu. Polecenie snu zajmuje pięć sekund na zakończenie drugiego procesu tła. Następnie wydrukowaliśmy bieżący czas, używając struktury DateTime of the Bash. Następnie polecenie oczekiwania jest wykorzystywane, gdzie zmienna „procesd” jest ustawiona jako argument. Polecenie Wait zawiera teraz czas oczekiwania zmiennej ProcessiD, która wynosi trzy sekundy.

Po trzech sekundach pozostały proces skryptu BASH. Zauważ, że mamy kolejne polecenie oczekiwania, które jest przekazane znakiem „$!„W związku z tym argumentem zostanie wykonana ostatnia instrukcja ECHO. do pobrania identyfikatora procesu polecenia ostatniego uruchomienia.

#!/bin/bash
echo „proces1 dla 3 sekundy” i sleep 3 &
ProcessId = $!
echo „proces1 dla 5 sekund” i sleep 5 &
echo „aktualny czas $ (data +%t)”
Poczekaj $ processId
Echo „Process1 Czas wypowiedzenia $ (data +%t) ze statusem wyjścia $?"
Poczekaj $!
Echo „Process2 Czas wypowiedzenia $ (data +%t) ze statusem wyjścia $?"

Wyjście najpierw pokazało zakończenie procesu wraz z czasem zakończenia. Następnie aktualny proces czasowy jest zakończony. Następnie nastąpiło oczekiwanie, a następnie wykonano następne polecenie ECHO, które wyświetlało wartość stanu wyjścia zero wraz z czasem zakończenia. Status wyjścia zero wartości oznacza, że ​​proces został pomyślnie zakończony. Z drugiej strony, pauza nastąpi na czas, w którym zajął się ostatni proces, a ostatnie stwierdzenie zostanie wyświetlone.

Linux@VirtualBox: ~ Bash ./Grzmotnąć.cii
Proces1 na 5 sekund
Proces1 na 3 sekundy
Obecny czas 00:31:20
Process1 Czas zakończenia 00:31:23 ze statusem wyjścia 0
Process2 Czas zakończenia 00:31:25 ze statusem wyjścia 0

Wniosek

Artykuł zawiera sposób oczekiwania na zakończenie określonego procesu w Linux. Użyliśmy polecenia Wait, aby czekać na proces uruchamiania. Najpierw używamy polecenia Wait, aby pojedynczy proces czeka, a następnie wywołaliśmy polecenie oczekiwania na wiele procesów. Następnie polecenie oczekiwania jest wywoływane przez identyfikator procesu, aby uzyskać identyfikator procesu wielu procesów.