Espereu l'ordre a Linux

Wait Command Linux



espera és un comandament integrat de Linux que espera completar qualsevol procés en execució. espera L'ordre s'utilitza amb un identificador de procés o un identificador de treball concret. Quan s'executen diversos processos a l'intèrpret d'ordres, només l'identificador de procés de l'última ordre serà conegut per l'intèrpret d'ordres actual. Si aquesta vegada s’executa l’ordre wait, s’aplicarà per a l’última ordre. Si no es proporciona cap identificador de procés o identificador de treball amb l'ordre wait, esperarà que es completin tots els processos secundaris actuals i retornarà l'estat de sortida.

El valor de l'estat de sortida de l'ordre d'espera depèn de l'ordre indicada per l'últim operand especificat. Quan qualsevol procés finalitza de manera anormal, l'estat de sortida serà superior a 128 i serà diferent dels valors d'estat de sortida d'altres ordres. espera l'ordre surt amb el valor 0 quan truca sense operands i tots els identificadors de procés coneguts pel shell actual han finalitzat. Si l’ordre wait detecta algun error, torna qualsevol valor de l’1 al 126. Si es desconeix l’últim identificador del procés, l’ordre wait surt amb el valor 127. En aquest tutorial es mostra com podeu utilitzar l’ordre wait a Linux.







Exemple 1: utilitzar l'ordre d'espera per a diversos processos

Després d’executar el següent script, s’executaran dos processos en segon pla i l’identificador de procés de la primera ordre echo s’emmagatzema a la variable $ process_id. Quan s'executa l'ordre wait amb $ process_id, l'ordre següent esperarà a completar la tasca de la primera ordre eco. La segona ordre d'espera s'utilitza amb ' $! 'I això indica l'identificador del procés de l'últim procés en execució. ' $? ’S’utilitza per llegir el valor d’estat de l’ordre wait.



#! / bin / bash
trobo 'prova d'ordres d'espera1' &
id_procés=$!
trobo 'prova d'ordres d'espera2' &
espera $ process_id
troboFeina1ha sortit amb estat$?
espera $!
troboFeina2ha sortit amb estat$?

Sortida:



$bashwait1.sh





Exemple-2: proveu l'ordre d'espera després d'utilitzar l'ordre kill

Al següent script, l'ordre wait s'executa després de finalitzar el procés. l'ordre sleep s'executa com a procés en segon pla i l'ordre kill s'executa per finalitzar el procés en execució. Després d'aquesta ordre d'espera s'executa amb l'identificador de procés del procés finalitzat. La sortida mostrarà l'identificador del procés finalitzat.

#! / bin / bash
trobo 'Prova de l'ordre d'espera'
dormir 20 &
pid=$!
matar $ pid
espera $ pid
trobo $ pidva ser donat de baixa.

Sortida:



$bashwait2.sh

Exemple-3: comproveu el valor de l'estat de sortida

Al següent script, la funció check () es diu per dos valors d'argument. A l'inici del tutorial, es discuteix que si l'ordre wait s'executa correctament, el valor de sortida serà 0 i si l'ordre wait detecta algun error, retornarà qualsevol valor entre 1 i 126. Després d'executar l'script, si passa 0 com a segon argument L'ordre value then wait s'acaba correctament i, si passa algun valor superior a zero, s'acaba sense èxit.

#! / bin / bash
funciócomprovar()
{
trobo 'Dormiu 1 $ segons'
dormir $ 1
sortir $ 2
}
comprovar$ 1 $ 2 &
b=$!
trobo 'Comprovació de l'estat'
espera $ b && troboD'acord|| troboNO ESTÀ BÉ

Sortida:

$bashwait3.sh3 0
$bashwait3.sh3 5

Espero que aquest tutorial us ajudi a aprendre correctament l’ordre d’utilitzar. Hi ha una altra ordre a Linux, anomenada dormir esperar la quantitat determinada de vegades, però hi ha algunes diferències entre aquestes ordres. Si esteu interessats en conèixer-los ordre de son després podeu visitar aquest enllaç.