สิ่งที่กำหนดว่างานพื้นหลังถูกฆ่าตายเมื่อเปลือกออกหรือฆ่า?
คำถามนี้ได้เกิดขึ้นค่อนข้าง มาก ( จริงๆมาก ) แต่ผมหาคำตอบที่จะเป็นโดยทั่วไปที่ไม่สมบูรณ์ คำถามทั่วไปคือ "ทำไม / งานของฉันไม่ถูกฆ่าตายเมื่อฉันออกจาก / kill ssh?" และนี่คือสิ่งที่ฉันได้พบ คำถามแรกคือ: ข้อมูลต่อไปนี้เป็นอย่างไร? ต่อไปนี้น่าจะเป็นจริงสำหรับ Debian linux ที่ทันสมัย แต่ฉันขาดหายไปบ้าง และคนอื่น ๆ จำเป็นต้องรู้อะไร กระบวนการลูกทั้งหมด, พื้นหลังหรือไม่ของเชลล์ที่เปิดผ่านการเชื่อมต่อ ssh จะถูกฆ่าด้วย SIGHUP เมื่อการเชื่อมต่อ ssh ถูกปิดเฉพาะในกรณีที่huponexitมีการตั้งค่าตัวเลือก: run shopt huponexitเพื่อดูว่าสิ่งนี้เป็นจริงหรือไม่ หากhuponexitเป็นจริงคุณสามารถใช้nohupหรือdisownแยกส่วนกระบวนการออกจากเชลล์ดังนั้นจึงไม่ถูกฆ่าเมื่อคุณออกจาก screenหรือเรียกใช้สิ่งที่มี หากhuponexitเป็นเท็จซึ่งเป็นค่าเริ่มต้นใน linuxes อย่างน้อยวันนี้งานที่อยู่เบื้องหลังจะไม่ถูกฆ่าเมื่อออกจากระบบปกติ แต่แม้ว่าhuponexitจะเป็นเท็จแล้วหากการเชื่อมต่อ ssh ถูกฆ่าหรือลดลง (แตกต่างจากการออกจากระบบปกติ) กระบวนการพื้นหลังจะยังคงได้รับการฆ่า สิ่งนี้สามารถหลีกเลี่ยงได้โดยdisownหรือnohupใน (2) มีความแตกต่างระหว่าง (ก) กระบวนการที่มีพ่อแม่เป็นกระบวนการขั้วและ …