คำถามนี้ได้เกิดขึ้นค่อนข้าง มาก ( จริงๆมาก ) แต่ผมหาคำตอบที่จะเป็นโดยทั่วไปที่ไม่สมบูรณ์ คำถามทั่วไปคือ "ทำไม / งานของฉันไม่ถูกฆ่าตายเมื่อฉันออกจาก / kill ssh?" และนี่คือสิ่งที่ฉันได้พบ คำถามแรกคือ: ข้อมูลต่อไปนี้เป็นอย่างไร? ต่อไปนี้น่าจะเป็นจริงสำหรับ Debian linux ที่ทันสมัย แต่ฉันขาดหายไปบ้าง และคนอื่น ๆ จำเป็นต้องรู้อะไร
กระบวนการลูกทั้งหมด, พื้นหลังหรือไม่ของเชลล์ที่เปิดผ่านการเชื่อมต่อ ssh จะถูกฆ่าด้วย SIGHUP เมื่อการเชื่อมต่อ ssh ถูกปิดเฉพาะในกรณีที่
huponexit
มีการตั้งค่าตัวเลือก: runshopt huponexit
เพื่อดูว่าสิ่งนี้เป็นจริงหรือไม่หาก
huponexit
เป็นจริงคุณสามารถใช้nohup
หรือdisown
แยกส่วนกระบวนการออกจากเชลล์ดังนั้นจึงไม่ถูกฆ่าเมื่อคุณออกจากscreen
หรือเรียกใช้สิ่งที่มีหาก
huponexit
เป็นเท็จซึ่งเป็นค่าเริ่มต้นใน linuxes อย่างน้อยวันนี้งานที่อยู่เบื้องหลังจะไม่ถูกฆ่าเมื่อออกจากระบบปกติแต่แม้ว่า
huponexit
จะเป็นเท็จแล้วหากการเชื่อมต่อ ssh ถูกฆ่าหรือลดลง (แตกต่างจากการออกจากระบบปกติ) กระบวนการพื้นหลังจะยังคงได้รับการฆ่า สิ่งนี้สามารถหลีกเลี่ยงได้โดยdisown
หรือnohup
ใน (2)มีความแตกต่างระหว่าง (ก) กระบวนการที่มีพ่อแม่เป็นกระบวนการขั้วและ (ข) กระบวนการที่ได้ stdin, stdout, stderr หรือบางอย่างที่เชื่อมต่อไปยังสถานี ฉันไม่รู้ว่าเกิดอะไรขึ้นกับกระบวนการที่ (ก) และไม่ (ข) หรือในทางกลับกัน
คำถามสุดท้าย: ฉันจะหลีกเลี่ยงพฤติกรรมได้อย่างไร (3) กล่าวอีกนัยหนึ่งโดยค่าเริ่มต้นในกระบวนการที่เป็นพื้นหลังของเดเบียนทำงานด้วยตนเองอย่างสนุกสนานหลังจากออกจากระบบ แต่ไม่หลังจากการเชื่อมต่อ ssh ถูกฆ่า ฉันต้องการสิ่งเดียวกันที่เกิดขึ้นกับกระบวนการโดยไม่คำนึงว่าการเชื่อมต่อถูกปิดตามปกติหรือถูกฆ่า หรือนี่เป็นความคิดที่ไม่ดีใช่ไหม
แก้ไข:อีกวิธีที่สำคัญที่จะทำให้งานของการถูกฆ่าตายที่ทำงานในกรณีใดกรณีหนึ่งคือการทำงานให้พวกเขาผ่าน (?) หน้าจอ แต่คำถามนั้นเกี่ยวกับการทำความเข้าใจมากขึ้นเมื่อสิ่งต่าง ๆ ถูกฆ่าและเมื่อพวกเขาไม่ทำ: บางครั้งผู้คนต้องการให้งานถูกฆ่าเมื่อออกจากระบบ
หัวข้อเพิ่มเติม: - ชี้แจงเกี่ยวกับสัญญาณ (ถอนหายใจ) งานและสถานีควบคุม - /server/117152/do-background-processes-get-a-sighup-when-logging-off - SSH ต่อไป งาน / งานพื้นหลังเมื่อปิด SSH - งานที่ใส่ไว้ในพื้นหลังจะทำงานต่อไปหลังจากเซสชัน SSH ถูกปิดหรือไม่ - ป้องกันไม่ให้กระบวนการพื้นหลังที่ทำงานอยู่แล้วหยุดทำงานหลังจากปิดไคลเอนต์ SSH - ฉันจะเริ่มต้นกระบวนการผ่าน SSH ได้อย่างไรเพื่อให้กระบวนการทำงานต่อไปหลังจากที่ฉันยกเลิกการเชื่อมต่อ - ไม่สามารถให้งานรีโมตทำงานใน OS X ได้ - ปิดการเชื่อมต่อ SSH