Linux

Perintah tunggu bash

Perintah tunggu bash

Tunggu adalah perintah yang menunggu pekerjaan yang diberikan selesai dan mengembalikan status keluar dari perintah yang ditunggu.

Sejak Tunggu perintah mempengaruhi lingkungan eksekusi shell saat ini, ini diimplementasikan sebagai perintah bawaan di sebagian besar shell.

Pada artikel ini, kita akan menjelajahi Bash built-in Tunggu perintah.

Pesta Tunggu Perintah #

Sintaks umum dari Tunggu built-in mengambil bentuk berikut:

tunggu [opsi] ID 

Indo adalah proses atau ID pekerjaan. Jika tidak Indo ditentukan, perintah menunggu sampai semua pekerjaan latar belakang anak selesai.

Itu Tunggu perintah mengembalikan status keluar dari perintah terakhir yang ditunggu.

Misalnya, untuk menunggu proses latar belakang dengan PID 7654, Anda akan menggunakan:

tunggu 7654

Ketika beberapa proses diberikan, perintah menunggu semua proses selesai.

Pekerjaan ditentukan menggunakan spesifikasi pekerjaan (“jobspec”), yang merupakan cara untuk merujuk pada proses yang membentuk pekerjaan. Jobspec dimulai dengan simbol persentase diikuti dengan nomor pekerjaan (%n). Berikut ini contohnya:

Jalankan perintah di latar belakang:

rsync -a /home /tmp/home &

ID pekerjaan shell (dikelilingi dengan tanda kurung) dan ID proses akan ditampilkan di terminal Anda:

[2] 54377 

Untuk menunggu pekerjaan, jalankan Tunggu perintah diikuti dengan spesifikasi pekerjaan:

tunggu %2

Ketika dipanggil dengan -tidak opsi, perintah hanya menunggu satu pekerjaan dari pid atau spesifikasi pekerjaan yang diberikan untuk diselesaikan dan mengembalikan status keluarnya. Jika tidak ada argumen yang diberikan, tunggu -n menunggu pekerjaan latar belakang apa pun selesai dan mengembalikan status keluar pekerjaan.

tunggu -n 45432 54346 76573

Pada contoh di atas, tunggu -n hanya mencetak status pengembalian pekerjaan yang keluar terlebih dahulu; itu tidak menunjukkan PID pekerjaan. Jika Anda ingin mendapatkan pid pekerjaan atau spesifikasi pekerjaan yang status keluarnya dikembalikan, gunakan: -p opsi untuk menetapkannya ke variabel:

tunggu -p job_id -n 45432 54346 76573

-p opsi diperkenalkan di Bash 5.1. Jika Anda menggunakan versi Bash yang lebih lama, Anda akan mendapatkan kesalahan "opsi tidak valid".

Itu -f pilihan memberitahu Tunggu untuk menunggu setiap pid atau jobspec benar-benar berakhir sebelum mengembalikan kode keluarnya, daripada kembali ketika status pekerjaan diubah. Opsi ini hanya berlaku jika kontrol pekerjaan diaktifkan. Secara default, kontrol pekerjaan diaktifkan hanya untuk petunjuk interaktif.

Contoh #

Tunggu biasanya digunakan dalam skrip shell yang menelurkan proses anak yang dijalankan secara paralel.

Untuk mengilustrasikan cara kerja perintah, buat skrip berikut:

#!/bin/bash tidur 30 & process_id=$! echo "PID: $process_id" tunggu $process_id echo "Status keluar: $?" 

Mari kita jelaskan kode baris demi baris:

  1. Baris pertama disebut shebang dan memberi tahu sistem operasi penerjemah mana yang digunakan untuk mengurai sisa file.
  2. Kami menggunakan tidur perintah untuk meniru proses latar belakang yang memakan waktu.
  3. $! adalah variabel Bash internal yang menyimpan PID dari pekerjaan terakhir yang dijalankan di latar belakang. Dalam contoh ini, itu adalah PID dari tidur perintah. Kami menyimpan PID dalam variabel (proses_id).
  4. Mencetak nomor PID.
  5. PID diteruskan ke Tunggu perintah yang menunggu sampai tidur perintah selesai.
  6. Mencetak status keluar dari Tunggu perintah. $? adalah variabel Bash internal yang memegang status keluar dari perintah terakhir yang dieksekusi.

Jika Anda menjalankan skrip, itu akan mencetak sesuatu seperti ini:

PID: 36353 Status keluar: 0 

Berikut contoh menggunakan -tidak pilihan:

#!/bin/bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Pekerjaan pertama selesai." wait echo "Semua pekerjaan selesai." 

Ketika skrip dieksekusi, itu memunculkan 3 proses latar belakang. tunggu -n menunggu sampai pekerjaan pertama selesai dan pernyataan gema dicetak. Tunggu menunggu semua pekerjaan latar belakang anak selesai.

pekerjaan pertama selesai semua pekerjaan selesai 

Contoh terakhir menjelaskan -f pilihan. Buka terminal dan jalankan:

tidur 3600 &
[1] 46671 

Tunggu prosesnya:

tunggu 46671

Buka terminal lain dan hentikan proses dengan membunuh perintah:

bunuh -BERHENTI 46671

Setelah status proses diubah, Tunggu perintah akan menyelesaikan dan mengembalikan kode keluar proses.

Sekarang, ulangi langkah yang sama, tapi kali ini gunakan tunggu -f $pid:

tidur 3600 &tunggu -f 46671

Hentikan proses dari terminal lain:

bunuh -BERHENTI 46671

Kali ini Tunggu perintah tidak akan selesai. Ini akan berjalan sampai tidur proses berakhir.

Kesimpulan #

Itu Tunggu perintah menunggu pekerjaan yang ditentukan untuk menyelesaikan dan mengembalikan kode keluar dari pekerjaan.

Jika Anda memiliki pertanyaan atau umpan balik, jangan ragu untuk meninggalkan komentar.

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...
Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...