Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

aspettare

Dimostreremo il aspettare comando prima. Per fare questo, avremo bisogno di due script, uno script padre:


#! / Bin / bash


# async-parent: Demo di esecuzione asincrona (genitore) echo "Genitore: avvio..."

echo "Genitore: avvio dello script figlio..." async-child &

pid=$!

echo "Genitore: figlio (PID= $pid) avviato."


echo "Genitore: continua..." sleep 2


echo "Genitore: in pausa per attendere che il figlio finisca..." wait $pid


echo "Genitore: il figlio ha terminato. Continua..." echo "Genitore: il genitore ha terminato. Uscita."

#! / Bin / bash


# async-parent: Demo di esecuzione asincrona (genitore) echo "Genitore: avvio..."

echo "Genitore: avvio dello script figlio..." async-child &

pid=$!

echo "Genitore: figlio (PID= $pid) avviato."


echo "Genitore: continua..." sleep 2


echo "Genitore: in pausa per attendere che il figlio finisca..." wait $pid


echo "Genitore: il figlio ha terminato. Continua..." echo "Genitore: il genitore ha terminato. Uscita."


e uno script figlio:



#! / Bin / bash

# async-child: Demo di esecuzione asincrona (child) echo "Child: child è in esecuzione..."

dormi 5

echo "Bambino: il bambino ha terminato. Uscita."

#! / Bin / bash

# async-child: Demo di esecuzione asincrona (child) echo "Child: child è in esecuzione..."

dormi 5

echo "Bambino: il bambino ha terminato. Uscita."


In questo esempio, vediamo che lo script figlio è molto semplice. L'azione vera e propria viene eseguita dallo script padre. Nello script padre, lo script figlio viene avviato e messo in background. L'ID di processo dello script figlio viene registrato assegnando pid variabile con il valore di $! parametro shell, che conterrà sempre l'ID del processo dell'ultimo job messo in background.

Lo script padre continua e poi esegue un aspettare comando con il PID del processo figlio. Questo fa sì che lo script padre venga messo in pausa finché lo script figlio non esce, momento in cui lo script padre si conclude.

Una volta eseguiti, gli script padre e figlio producono il seguente output:



[io@linuxbox~]$ genitore asincrono

Genitore: inizio...

[io@linuxbox~]$ genitore asincrono

Genitore: inizio...

Esecuzione asincrona


Genitore: avvio dello script figlio... Genitore: avvio dello script figlio (PID= 6741). Genitore: continuazione...

Bambino: il bambino sta correndo...

Genitore: pausa per aspettare che il bambino finisca... Bambino: il bambino ha finito. Uscita.

Genitore: il figlio ha terminato. Continua... Genitore: il genitore ha terminato. Uscita.

Genitore: avvio dello script figlio... Genitore: avvio dello script figlio (PID= 6741). Genitore: continuazione...

Bambino: il bambino sta correndo...

Genitore: pausa per aspettare che il bambino finisca... Bambino: il bambino ha finito. Uscita.

Genitore: il figlio ha terminato. Continua... Genitore: il genitore ha terminato. Uscita.


Il miglior sistema operativo cloud computing su OnWorks: