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