Linux

Bash tunggu Perintah

Bash tunggu Perintah

tunggu adalah perintah yang menunggu tugas yang diberikan selesai dan mengembalikan status keluar dari perintah yang ditunggu.

Sejak tunggu perintah mempengaruhi persekitaran pelaksanaan shell saat ini, ia dilaksanakan sebagai perintah built-in di kebanyakan shell.

Dalam artikel ini, kita akan meneroka Bash terbina dalam tunggu perintah.

Tendangan tunggu Perintah #

Sintaks am bagi tunggu terbina dalam bentuk berikut:

tunggu ID [pilihan] 

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

The tunggu arahan mengembalikan status keluar dari arahan terakhir yang ditunggu.

Sebagai contoh, untuk menunggu proses latar belakang dengan PID 7654, anda akan menggunakan:

tunggu 7654

Apabila banyak proses diberikan, perintah menunggu semua proses selesai.

Pekerjaan ditentukan menggunakan spesifikasi pekerjaan ("jobspec"), yang merupakan cara untuk merujuk pada proses yang membentuk pekerjaan. Jobpec bermula dengan simbol peratusan diikuti dengan nombor pekerjaan (% n). Berikut adalah contoh:

Jalankan perintah di latar belakang:

rsync -a / rumah / tmp / rumah &

ID tugas shell (dikelilingi dengan tanda kurung) dan ID proses akan dipaparkan di terminal anda:

[2] 54377 

Untuk menunggu kerja, jalankan tunggu arahan diikuti dengan spesifikasi pekerjaan:

tunggu% 2

Apabila dipanggil dengan -n pilihan, perintah hanya menunggu satu pekerjaan dari pid atau jobspec yang diberikan untuk menyelesaikan dan mengembalikan status keluarnya. Sekiranya tidak ada hujah yang diberikan, tunggu -n menunggu sebarang pekerjaan latar belakang selesai dan mengembalikan status keluar kerja.

tunggu -n 45432 54346 76573

Dalam contoh di atas, tunggu -n hanya mencetak status pengembalian pekerjaan yang keluar terlebih dahulu; ia tidak menunjukkan PID pekerjaan. Sekiranya anda ingin mendapatkan pid pekerjaan ataupekerjaan yang status keluarnya dikembalikan, gunakan -hlm pilihan untuk memberikannya kepada pemboleh ubah:

tunggu -p job_id -n 45432 54346 76573

-hlm pilihan diperkenalkan dalam Bash 5.1. Sekiranya anda menggunakan versi Bash yang lebih lama, anda akan mendapat ralat "pilihan tidak sah".

The -f pilihan memberitahu tunggu untuk menunggu setiap pid atau jobspec benar-benar dihentikan sebelum mengembalikan kod keluarnya, dan bukannya kembali ketika status pekerjaan diubah. Pilihan ini hanya sah apabila kawalan kerja diaktifkan. Secara lalai, kawalan kerja diaktifkan hanya untuk arahan interaktif.

Contoh #

tunggu biasanya digunakan dalam skrip shell yang melahirkan proses anak yang dijalankan secara selari.

Untuk menggambarkan bagaimana perintah itu berfungsi, buat skrip berikut:

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

Mari jelaskan baris demi baris kod:

  1. Baris pertama disebut shebang dan memberitahu sistem operasi yang digunakan jurubahasa untuk menghuraikan fail yang selebihnya.
  2. Kami menggunakan tidur arahan untuk meniru proses latar belakang yang memakan masa.
  3. $! adalah pemboleh ubah Bash dalaman yang menyimpan PID pekerjaan terakhir yang dijalankan di latar belakang. Dalam contoh ini, itulah PID dari tidur perintah. Kami menyimpan PID dalam pemboleh ubah (proses_id).
  4. Mencetak nombor PID.
  5. PID diserahkan ke tunggu arahan yang menunggu sehingga tidur arahan selesai.
  6. Mencetak status keluar dari tunggu perintah. $? adalah pemboleh ubah Bash dalaman yang memegang status keluar dari arahan terakhir yang dilaksanakan.

Sekiranya anda menjalankan skrip, ia akan mencetak seperti ini:

PID: 36353 Status keluar: 0 

Berikut adalah contoh menggunakan -n pilihan:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & waiting -n echo "Kerja pertama selesai."tunggu gema" Semua pekerjaan selesai." 

Apabila skrip dijalankan, ia menghasilkan 3 proses latar belakang. tunggu -n menunggu sehingga kerja pertama selesai dan pernyataan gema dicetak. tunggu menunggu semua pekerjaan latar belakang kanak-kanak selesai.

kerja pertama selesai semua pekerjaan selesai 

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

tidur 3600 &
[1] 46671 

Tunggu prosesnya:

tunggu 46671

Buka terminal lain dan hentikan proses dengan bunuh arahan:

bunuh -STOP 46671

Setelah status proses diubah, the tunggu arahan akan menyelesaikan dan mengembalikan kod keluar proses.

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

tidur 3600 &tunggu -f 46671

Hentikan proses dari terminal lain:

bunuh -STOP 46671

Kali ini tunggu arahan tidak akan lengkap. Ia akan berjalan sehingga tidur proses berakhir.

Kesimpulan #

The tunggu perintah menunggu tugas yang ditentukan selesai dan mengembalikan kod keluar pekerjaan.

Sekiranya anda mempunyai pertanyaan atau maklum balas, jangan ragu untuk memberikan komen.

5 Produk Tetikus Komputer Ergonomik Teratas untuk Linux
Adakah penggunaan komputer yang berpanjangan menyebabkan rasa sakit di pergelangan tangan atau jari anda? Adakah anda mengalami sendi kaku dan selalu ...
Cara Mengubah Tetapan Tetikus dan Pad Sentuh Menggunakan Xinput di Linux
Sebilangan besar pengedaran Linux dihantar dengan perpustakaan "libinput" secara lalai untuk menangani peristiwa input pada sistem. Ia dapat memproses...
Buat semula butang tetikus anda secara berbeza untuk perisian yang berbeza dengan X-Mouse Button Control
Mungkin anda memerlukan alat yang dapat mengubah kawalan tetikus anda dengan setiap aplikasi yang anda gunakan. Sekiranya ini berlaku, anda boleh menc...