Skip to main content

Bash Subshells และการประมวลผลแบบขนาน

สอน Excel เบื้องต้น: การใช้งานไมโครซอฟท์เอ็กซ์เซล (Microsoft Excel) เบื้องต้น (อาจ 2025)

สอน Excel เบื้องต้น: การใช้งานไมโครซอฟท์เอ็กซ์เซล (Microsoft Excel) เบื้องต้น (อาจ 2025)
Anonim

เปลือกเป็นส่วนติดต่อพื้นฐานสำหรับการป้อนคำสั่งบนระบบลีนุกซ์ ด้วยคุณสามารถป้อนคำสั่งได้โดยตรงหรือระบุไฟล์ (สคริปต์) ที่มีลำดับคำสั่งที่จะเรียกใช้ เปลือกหอยจัดอยู่ในลำดับชั้นและเปลือกใด ๆ สามารถสร้างเปลือกใหม่ได้ เปลือกใหม่ถือเป็นขั้นตอนย่อยสำหรับย่อย ๆ ของเปลือกแม่ซึ่งจะสร้างขึ้นมา

โดยค่าเริ่มต้น subshell จะขึ้นอยู่กับ parent ในแง่ที่ว่าถ้า process parent ถูกยุติลง subshell ก็จะยุติด้วย เอาท์พุทใด ๆ จะถูกส่งผ่านจากเปลือกย่อยไปยังเปลือกแม่

วิธีการสร้าง Subshell

ในสคริปต์เชลล์ Bash คุณจะสร้าง subshell โดยใช้สัญกรณ์วงเล็บ:

ในตัวอย่างวนรอบในขณะอยู่ในวงเล็บซึ่งทำให้มันถูกเรียกใช้ในเปลือกย่อยของเปลือกที่มีการเรียกใช้ไฟล์สคริปต์

การเรียกใช้ Subshell ในเบื้องหลัง

ถ้าคุณไม่ระบุว่า subshell จะถูกเรียกใช้ในแบ็คกราวน์เปลือกต้นแบบรอให้ subshell เสร็จสิ้นก่อนดำเนินการต่อกับส่วนที่เหลือของสคริปต์ อย่างไรก็ตามถ้าคุณต้องการเรียกใช้ subshells แบบขนานคุณสามารถเรียกใช้งานได้ในแบบเบื้องหลังซึ่งสามารถทำได้โดยใช้อักขระเครื่องหมายกลางต่อจากการแสดงออกของซับสเปรดตามที่แสดงที่นี่:

กำลังเรียกใช้หลาย Subshells ในแบบขนาน

ถ้าคุณสร้างหลาย subshells เป็นกระบวนการพื้นหลังคุณสามารถเรียกใช้งานแบบขนาน โดยปกติระบบปฏิบัติการจะใช้โปรเซสเซอร์หรือคอร์ที่แตกต่างกันสำหรับแต่ละกระบวนการและกระบวนการย่อยโดยสมมติว่ามีโปรเซสเซอร์หรือแกนประมวลผลอย่างน้อยหนึ่งตัวเนื่องจากมีกระบวนการ มิฉะนั้นงานจะถูกกำหนดให้กับโปรเซสเซอร์หรือแกนเดียวกัน ในกรณีนี้โปรเซสเซอร์หรือแกนจะสลับระหว่างงานที่มอบหมายไปเรื่อย ๆ จนกระทั่งงานเสร็จสิ้น ตัวอย่างต่อไปมีสองโพรเซส คนแรกนับตั้งแต่ 1 ถึง 99 คนและคนที่สองนับตั้งแต่ 1000 ถึง 1099

ใช้คำสั่งรอเพื่อบอกกระบวนการหลักเพื่อรอให้กระบวนการย่อยดำเนินการเสร็จสิ้นก่อนดำเนินการกับส่วนที่เหลือของสคริปต์:

ใช้สำหรับ Subshells

Subshells มีประโยชน์เมื่อจำเป็นต้องใช้คำสั่งในสภาพแวดล้อมหรือไดเรกทอรีเฉพาะ ถ้าคำสั่งแต่ละคำสั่งทำงานในซับสเกลที่แตกต่างกันไม่มีความเสี่ยงใดที่การตั้งค่าตัวแปรจะถูกผสมขึ้น เมื่อเสร็จสิ้นการตั้งค่าและไดเร็กทอรีปัจจุบันจะไม่จำเป็นต้องได้รับการกู้คืนเนื่องจากสภาพแวดล้อมของโพรเซสย่อยของกระบวนการย่อยจะไม่ได้รับผลกระทบใด ๆ

Subshells สามารถใช้ในคำจำกัดความของฟังก์ชันเพื่อให้สามารถทำงานได้หลายครั้งด้วยพารามิเตอร์ที่แตกต่างกัน