สมมติว่าคุณขาดทั้ง GNU screen
และtmux
(และ X11 และคอนโซลเสมือน) แต่ต้องการสลับระหว่างล็อกอินเชลล์และเชลล์โต้ตอบอีกอันหนึ่ง
คุณจะเข้าสู่ระบบในคอนโซลก่อนแล้วจึงเริ่มเปลือกใหม่ปิดกั้นเปลือกเข้าสู่ระบบชั่วคราว suspend
ที่จะได้รับกลับเปลือกเข้าสู่ระบบการทำงานบางอย่างมีคุณต้องการจะทำอย่างไร จากนั้นคุณจะfg
ต้องเอาเปลือกโต้ตอบกลับมาเพื่อดำเนินการต่อกับสิ่งที่คุณทำที่นั่น
ในความเป็นจริงที่มีการควบคุมงานเปลือกเข้าสู่ระบบอาจวางไข่จำนวนของเปลือกหอยโต้ตอบเป็นงานพื้นหลังที่คุณสามารถสลับไปกับfg %1
, fg %2
ฯลฯ แต่ที่จะได้รับกลับไปยังเปลือกเข้าสู่ระบบคุณจะต้องใช้เว้นแต่คุณต้องการด้วยตนเองsuspend
kill -s STOP $$
นอกจากนี้โปรดทราบว่าCtrl+ Zที่การแจ้งเตือนในเชลล์แบบโต้ตอบจะไม่ระงับ
แก้ไข:เริ่มแรกฉันมีส่วนสมมุติยาว ๆ เกี่ยวกับการใช้suspend
สคริปต์ แต่เนื่องจากคำสั่งต้องการการควบคุมงานและเนื่องจากเชลล์ที่ไม่มีการโต้ตอบมักจะไม่มีการควบคุมงานฉันจึงลบหัวข้อนั้นออก
ส่วนที่ถูกลบด้วยการsuspend
แทนที่ด้วยkill -s STOP $$
(อันนี้ไม่ได้เป็นของคำตอบอีกต่อไป แต่มันอาจจะน่าสนใจสำหรับคนอื่น ๆ อยู่แล้ว):
สมมติว่าคุณมีกระบวนการแบ็คกราวน์ (สคริปต์) ในสคริปต์และกระบวนการพื้นหลังนี้ในบางขั้นตอนจำเป็นต้องหยุดและรอให้กระบวนการพาเรนต์นั้นดำเนินการต่อ นี่อาจเป็นสาเหตุที่ผู้ปกครองมีเวลาในการแยกและย้ายไฟล์ไปไว้ที่อื่นหรืออะไรทำนองนั้น
สคริปต์เด็กจะระงับ ( kill -s STOP $$
) และสคริปต์ที่ผู้ปกครองจะส่งCONT
สัญญาณไปมันเมื่อมันก็โอเคที่จะดำเนินการ
มันเปิดโอกาสให้คุณใช้การเรียงลำดับการซิงโครไนซ์ระหว่างกระบวนการพาเรนต์และกระบวนการลูก (แม้ว่าพื้นฐานมากเป็นกระบวนการพาเรนต์เชลล์ต้องการมากกว่าหรือน้อยกว่าที่จะคาดเดาว่ากระบวนการลูกหยุดชั่วคราวแม้ว่าจะสามารถแก้ไขได้ กับดักCONT
และไม่ระงับหากได้รับสัญญาณเร็วเกินไป)
fork/exec
เรียกใช้ระบบ