Pelajari Cara Menjalankan Jalankan Subshells Menggunakan Skrip Bash

Cara Menginstruksikan Subshells untuk Berjalan Secara Bersamaan di Latar Belakang

Shell adalah antarmuka dasar untuk memasukkan perintah pada sistem Linux. Dengan itu, Anda dapat memasukkan perintah secara langsung atau menentukan file (skrip) yang berisi urutan perintah yang akan dieksekusi. Kerang diatur dalam hierarki, dan setiap shell dapat membuat shell baru. Shell baru dianggap sebagai proses turunan — subkulit — dari shell induk yang membuatnya.

Secara default, subkulit bergantung pada induknya dalam arti bahwa jika proses induk berakhir, subkulit juga akan berakhir. Setiap output dilewatkan dari subkulit ke shell induk.

Cara Membuat Subkulit

Dalam skrip shell Bash, Anda membuat subkulit menggunakan notasi kurung:

#! / bin / bash echo "Sebelum memulai subkulit" (hitung = 1 ketika [$ count -le 99] lakukan echo "hitungan $" sleep 1 ((hitungan ++)) selesai) echo "Selesai"

Dalam contoh, loop sementara diapit dalam kurung, yang menyebabkannya dieksekusi dalam subkulit shell di mana file skrip dieksekusi.

Menjalankan Subshell di Background

Kecuali Anda menetapkan bahwa subkulit akan dieksekusi di latar belakang, shell induk menunggu subkulit selesai sebelum melanjutkan dengan sisa skrip. Namun, jika Anda ingin menjalankan subkulit secara paralel, Anda menjalankannya di latar belakang, yang diselesaikan dengan karakter ampersand yang mengikuti ekspresi subkulit, seperti yang ditunjukkan di sini:

#! / bin / bash echo "Sebelum memulai subkulit" (hitung = 1 ketika [$ count -le 99] lakukan gema "hitungan $" sleep 1 ((hitungan ++)) selesai) & echo "Selesai"

Menjalankan Beberapa Sub-bidang dalam Paralel

Jika Anda membuat beberapa subkulit sebagai proses latar belakang, Anda dapat menjalankan tugas secara paralel. Biasanya, sistem operasi menggunakan prosesor atau inti yang berbeda untuk setiap proses dan subproses, dengan asumsi ada setidaknya sebanyak prosesor atau inti karena ada proses. Jika tidak, tugas ditugaskan ke prosesor atau inti yang sama. Dalam hal ini, prosesor atau inti terus beralih di antara tugas yang ditetapkan hingga tugas selesai. Contoh berikut memiliki dua subproses. Yang pertama menghitung dari 1 hingga 99, dan yang kedua dari 1000 hingga 1099.

#! / bin / bash echo "Sebelum memulai subkulit" (hitung = 1 ketika [$ count -le 99] lakukan echo "hitungan $" sleep 1 ((count ++)) selesai) & (hitung = 1000 saat [$ count -le 1099] lakukan echo "count $" sleep 1 ((hitungan ++)) selesai) & echo "Selesai"

Gunakan pernyataan menunggu untuk memberi tahu proses induk untuk menunggu subproses selesai sebelum melanjutkan dengan sisa skrip:

#! / bin / bash echo "Sebelum memulai subkulit" (hitung = 1 ketika [$ count -le 99] lakukan echo "hitungan $" sleep 1 ((count ++)) selesai) & (hitung = 1000 saat [$ count -le 1099] lakukan echo "hitungan $" sleep 1 ((hitungan ++)) selesai) & tunggu echo "Selesai"

Gunakan untuk Subshells

Subshell berguna ketika perintah harus dieksekusi di lingkungan atau direktori tertentu. Jika setiap perintah dijalankan dalam subkulit yang berbeda, tidak ada risiko pengaturan variabel akan tercampur. Setelah selesai, pengaturan dan direktori saat ini tidak perlu dipulihkan, karena lingkungan proses induk tidak terpengaruh oleh subprosesnya.

Subshells dapat digunakan dalam definisi fungsi sehingga dapat dieksekusi beberapa kali dengan parameter yang berbeda.