ຮຽນຮູ້ວິທີການຕິດຕັ້ງ Subshells ໂດຍໃຊ້ Script Bash

ວິທີການແນະນໍາ Subshells ເພື່ອດໍາເນີນການໃນຂະຫນານໃນພື້ນຫລັງ

ເປືອກເປັນການໂຕ້ຕອບພື້ນຖານສໍາລັບການເຂົ້າຫາຄໍາສັ່ງໃນລະບົບ Linux. ດ້ວຍມັນ, ທ່ານສາມາດໃສ່ຄໍາສັ່ງໂດຍກົງຫຼືລະບຸໄຟລ໌ (script) ເຊິ່ງປະກອບດ້ວຍລໍາດັບຂອງຄໍາສັ່ງທີ່ຈະປະຕິບັດ. Shells ແມ່ນຈັດຢູ່ໃນລະດັບຕ່ໍາ, ແລະ shell ສາມາດສ້າງແກະໃຫມ່. ແກະໃຫມ່ໄດ້ຖືກພິຈາລະນາເປັນຂະບວນການຂອງເດັກ, ເປັນ subshell ຂອງຫອຍແມ່ທີ່ສ້າງມັນ.

ໂດຍຄ່າເລີ່ມຕົ້ນ, subshell ແມ່ນຂຶ້ນຢູ່ກັບພໍ່ແມ່ຂອງຕົນໃນແງ່ທີ່ວ່າຖ້າຂະບວນການຂອງພໍ່ແມ່ສິ້ນສຸດລົງ, subshell ຍັງສິ້ນສຸດ. ຜົນຜະລິດໃດໆຖືກສົ່ງຜ່ານຈາກ subshell ໄປຫາ shell ຂອງພໍ່ແມ່.

ວິທີການສ້າງ Subshell ເປັນ

ໃນ script shell shell, ທ່ານສ້າງ subhell ໂດຍໃຊ້ການກໍານົດຄ່າ parenthesis:

echo "ການນັບ $ count" ນອນ 1 ((count ++)) ເຮັດແລ້ວ) echo "Finished"

ໃນຕົວຢ່າງ, ວົງໃນຂະນະທີ່ ຖືກປິດໄວ້ໃນວົງເລັບ, ຊຶ່ງເຮັດໃຫ້ມັນຖືກປະຕິບັດໃນ subshell ຂອງ shell ໃນທີ່ໄຟລ໌ script ຈະຖືກປະຕິບັດ.

ແລ່ນ subshell ໃນພື້ນຫລັງ

ເວັ້ນເສຍແຕ່ວ່າທ່ານລະບຸວ່າ subshell ຈະຖືກປະຕິບັດຢູ່ໃນພື້ນຖານ, Shell ແມ່ waits ສໍາລັບ subshell ສໍາເລັດກ່ອນທີ່ຈະສືບຕໍ່ກັບສ່ວນທີ່ເຫຼືອຂອງ script. ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານຕ້ອງການໃຊ້ subshells ໃນຂະຫນານ, ທ່ານຈະດໍາເນີນການໃຫ້ພວກເຂົາຢູ່ໃນພື້ນຖານ, ເຊິ່ງໄດ້ເຮັດສໍາເລັດກັບຕົວອັກສອນແລະຕົວອັກສອນຕາມການສະແດງຂອງ subshell ດັ່ງທີ່ສະແດງຢູ່ນີ້:

echo "count count = 1 while [$ count -le 99] echo" count count "sleep 1 ((count ++))) & echo" Finished "

ແລ່ນຫຼາຍ subshells ໃນຂະຫນານ

ຖ້າທ່ານສ້າງ subshells ຫຼາຍເປັນ ຂະບວນການ ພື້ນຫລັງ, ທ່ານສາມາດດໍາເນີນວຽກໃນຂະຫນານ. ໂດຍປົກກະຕິ, ລະບົບປະຕິບັດການໃຊ້ລະບົບປະຕິບັດງານຕ່າງໆຫຼືຫຼັກສໍາລັບແຕ່ລະຂະບວນການແລະ subprocess, ສົມມຸດວ່າມີ processors ຫຼື core ຫຼາຍທີ່ສຸດເທົ່າທີ່ມີຂະບວນການ. ຖ້າບໍ່ດັ່ງນັ້ນ, ວຽກງານແມ່ນໄດ້ມອບຫມາຍໃຫ້ກັບໂປເຊັດເຕີຫຼືຫຼັກດຽວກັນ. ໃນກໍລະນີດັ່ງກ່າວ, ໂປເຊດເຊີຫລືຫຼັກການປ່ຽນສະຫຼຸບຢ່າງຕໍ່ເນື່ອງລະຫວ່າງວຽກທີ່ໄດ້ຮັບມອບຫມາຍຈົນກ່ວາວຽກງານແມ່ນສໍາເລັດ. ຕົວຢ່າງຕໍ່ໄປນີ້ມີສອງ subprocesses. ຫນຶ່ງຄັ້ງທໍາອິດນັບຈາກ 1 ເຖິງ 99 ແລະທີສອງຈາກ 1000 ເຖິງ 1099.

echo "count count" = 1 ໃນຂະນະທີ່ [$ count -le 99] ເຮັດ echo "count count" 1 ((count ++)) ແລ້ວ (count = 1000 ໃນຂະນະທີ່ [$ count -le 1099] ເຮັດ echo "count count" sleep 1 ((count ++)) ແລ້ວ) & echo "Finished"

ໃຊ້ຄໍາຊີ້ແຈງເພື່ອບອກຂັ້ນຕອນຂອງພໍ່ແມ່ທີ່ຈະລໍຖ້າໃຫ້ subprocesses ສໍາເລັດກ່ອນທີ່ຈະດໍາເນີນການກັບສ່ວນທີ່ເຫຼືອຂອງ script:

echo "count count" = 1 ໃນຂະນະທີ່ [$ count -le 99] ເຮັດ echo "count count" 1 ((count ++)) ແລ້ວ (count = 1000 ໃນຂະນະທີ່ [$ count -le 1099] ເຮັດ echo "ນັບ $ count" ນອນ 1 ((count ++)) ແລ້ວ) & ລໍຖ້າ echo "ສໍາເລັດແລ້ວ"

Uses for Subshells

Subshells ແມ່ນມີປະໂຫຍດເມື່ອຄໍາສັ່ງຕ້ອງການຈະຖືກປະຕິບັດໃນສະພາບແວດລ້ອມຫຼືລະບົບໂດຍສະເພາະ. ຖ້າຄໍາສັ່ງຂອງແຕ່ລະຖືກປະຕິບັດໃນລະບົບ subshell ທີ່ແຕກຕ່າງກັນ, ບໍ່ມີຄວາມສ່ຽງວ່າການຕັ້ງຄ່າຕົວແປຈະຖືກປະສົມຂຶ້ນ. ເມື່ອສໍາເລັດແລ້ວ, ການຕັ້ງຄ່າແລະລະບົບປະຈຸບັນບໍ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການຟື້ນຟູ, ຍ້ອນວ່າສະພາບແວດລ້ອມຂອງຂະບວນການຂອງພໍ່ແມ່ບໍ່ໄດ້ຮັບຜົນກະທົບຈາກໂຄງການຍ່ອຍຂອງມັນ.

Subshells ສາມາດຖືກນໍາໃຊ້ໃນ ຄໍານິຍາມການເຮັດວຽກ ເພື່ອໃຫ້ພວກເຂົາສາມາດຖືກປະຕິບັດຫຼາຍຄັ້ງດ້ວຍຕົວກໍານົດການທີ່ແຕກຕ່າງກັນ.