GNU/Linux >> Belajar Linux >  >> Linux

Tunggu Perintah di Linux dengan Contoh

Wait adalah perintah shell yang menunggu proses tertentu selesai, lalu mengembalikan status keluarnya. Perintah tunggu digunakan untuk menunggu ID proses dan ID pekerjaan tertentu dan mengembalikan status penghentiannya.

Saat menjalankan aliran otomatisasi besar, kita perlu membuat beberapa modul harus menunggu hingga kumpulan modul sebelumnya selesai dan mengembalikan data yang disalurkan ke modul berikutnya, dalam hal ini kita dapat menggunakan perintah Tunggu hingga modul sebelumnya selesai.

Cara kerja perintah wait

Perintah tunggu digunakan untuk memantau proses sebelumnya, tergantung pada status pengembalian proses sebelumnya akan mengembalikan status keluar. Misalnya, jika kita ingin menunggu untuk menyelesaikan proses tertentu ID 13245, maka kita harus menggunakan “wait 13245“ ketika proses 13245 complete wait perintah mengembalikan nilai kembali dari status keluar 13245.

- tunggu PID (PID - ID Proses dari suatu perintah, yang utilitasnya akan menunggu penghentian).
- wait JID (JID - Job ID yang mengidentifikasi proses latar belakang untuk menunggu, hanya berlaku untuk pemanggilan wait di lingkungan eksekusi shell saat ini).

Nilai status keluar dari perintah wait tergantung pada PID/JID terakhir yang ditentukan. Ketika ada proses yang berhenti secara tidak normal maka status keluar akan lebih besar dari 128.

Perintah tunggu keluar dengan nilai 0 ketika panggilan tanpa proses anak dan semua ID proses yang diketahui oleh shell saat ini telah dihentikan. Jika perintah wait mendeteksi kesalahan apa pun maka ia mengembalikan nilai apa pun dari 1 hingga 126. Jika id proses terakhir tidak diketahui maka perintah wait keluar dengan nilai 127.

Contoh Perintah Tunggu

Mari kita periksa beberapa skrip untuk memahami cara kerja perintah wait.

Contoh:1 – Skrip dengan perintah Tunggu

Kami memiliki dua skrip yang disebut skrip 'foo.sh' dan 'bar.sh'. Skrip 'Foo.sh' mencetak angka antara 1 hingga 5 dan skrip 'bar.sh' akan memanggil foo.sh dan menjalankannya di latar belakang, dapatkan PID foo.sh dan tunggu hingga selesai, setelah selesai akan mulai loop 'bar.sh' dan selesaikan.

Skrip – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Skrip – bar.sh

#!/bin/bash
echo “Started bar.sh”
echo “Started foo.sh”
./foo.sh &
pid=$!
wait $pid
echo “Completed foo.sh”

for I in 1 2 3 4 5
do
        echo “bar.sh – Looping … number $i”
done

Hasil

Started bar.sh
Started foo.sh
foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
Completed foo.sh
bar.sh – Looping .. number 1
bar.sh – Looping .. number 2
bar.sh – Looping .. number 3
bar.sh – Looping .. number 4
bar.sh – Looping .. number 5
Completed bar.sh
$

Contoh 2 – Script tanpa perintah wait

Kami memiliki dua skrip yang disebut skrip 'foo.sh' dan 'bar.sh'. skrip 'foo.sh' mencetak angka antara 1 hingga 5 dan skrip bar.sh akan memanggil foo.sh dan menjalankannya di latar belakang tetapi tidak akan menunggu foo.sh untuk menyelesaikan dan mengeksekusi kedua skrip.

Skrip – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Skrip – bar.sh

#!/bin/bash
echo “Started bar.sh”
echo “Started foo.sh”
./foo.sh &
echo “Completed foo.sh”

for I in 1 2 3 4 5
do
        echo “bar.sh – Looping … number $i”
done

Hasil

Started bar.sh
Started foo.sh
Completed foo.sh
bar.sh – Looping .. number 1
bar.sh – Looping .. number 2
bar.sh – Looping .. number 3
bar.sh – Looping .. number 4
bar.sh – Looping .. number 5
Completed bar.sh
$
foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
$

Contoh:3 – Skrip dengan perintah tunggu &status pengembalian

Skrip 'bar.sh' akan memanggil foo.sh dan menjalankannya di latar belakang, dapatkan PID dari foo.sh dan tunggu hingga selesai, setelah selesai, ia akan memulai loop bar.sh dan selesai, Akhirnya, ia mengembalikan kode keluar dari skrip foo.sh.

Skrip – foo.sh (Status keluar =0)

Skrip - foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Skrip – bar.sh

#!/bin/bash
./foo.sh &
BPID=$!
wait $BPID
stat=$?

if [ $stat –eq 0 ]
then
       echo “Exit status - $stat”
else
        echo “Exit status - $stat”
fi

Hasil

foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
Exit status - 0
$

Script – foo.sh (Status keluar =NON Nol)

Skrip - foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      iiecho “foo.sh – Looping … number $i”
done

Skrip – bar.sh

#!/bin/bash
./foo.sh &
BPID=$!
wait $BPID
stat=$?

if [ $stat –eq 0 ]
then
       echo “Exit status - $stat”
else
        echo “Exit status - $stat”
fi

Hasil

./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
Exit status – 127
$

Kesimpulan

Tunggu dan Tidur keduanya adalah panggilan sistem berbasis waktu di sistem Operasi. Mari kita periksa perbedaan antara perintah wait dan sleep.

Tunggu:Ketika pengguna ingin menghentikan proses saat ini dan melepaskan semua sumber daya yang ditahan oleh proses dan menunggu beberapa proses lain untuk dieksekusi. Kita perlu menggunakan notify untuk membuat proses ini sadar bahwa mulai eksekusi lagi setelah menyelesaikan proses lain.

Tidur:Panggilan sistem ini digunakan ketika pengguna ingin menghentikan proses saat ini untuk beberapa waktu. Itu membuat kunci tetap pada sumber daya sampai waktu tidur berakhir dan lagi memulai eksekusi proses. Di sini proses memiliki kontrol sepanjang eksekusi. misalnya saya menjalankan beberapa perintah di bash dan ingin tidur selama beberapa waktu karena mengharapkan beberapa output dari perintah yang dieksekusi yang akan digunakan dalam eksekusi lebih lanjut dari proses saat ini.


Linux
  1. Perintah Tee Linux dengan Contoh

  2. Perintah kepala Linux dengan Contoh

  3. Perintah JQ di Linux dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Echo di Linux (Dengan Contoh)

  1. Perintah man di Linux dengan Contoh

  2. Perintah AWK di Linux dengan Contoh

  3. Perintah Curl di Linux dengan Contoh