6
หากฉันเริ่มกระบวนการพื้นหลังแล้วออกจากระบบจะทำงานต่อไปได้หรือไม่
การถามสิ่งนี้หลังจากการสนทนากับเพื่อนร่วมงานเป็นเวลานานฉันต้องการคำอธิบายที่นี่จริงๆ ฉันเรียกใช้กระบวนการพื้นหลังโดยการต่อท้าย " &" ไปยังบรรทัดคำสั่งหรือโดยการหยุดCTRL-Zและกลับมาทำงานต่อในพื้นหลังด้วย " bg" จากนั้นฉันออกจากระบบ เกิดอะไรขึ้น? เราค่อนข้างแน่ใจว่ามันควรถูกสังหารโดย SIGHUP แต่สิ่งนี้ไม่ได้เกิดขึ้น เมื่อเข้าสู่ระบบอีกครั้งเป็นกระบวนการที่มีความสุขการทำงานและpstreeแสดงให้เห็นว่ามันเป็น "ลูกบุญธรรม" initโดย นี่เป็นพฤติกรรมที่คาดหวังหรือไม่? แต่ถ้าเป็นเช่นนั้นแล้วอะไรnohupคือวัตถุประสงค์ของคำสั่ง? ดูเหมือนว่ากระบวนการจะไม่ถูกฆ่าอย่างไรก็ตามมีหรือไม่มี ... แก้ไข 1 รายละเอียดเพิ่มเติมบางส่วน: คำสั่งถูกเรียกใช้จากเซสชัน SSH ไม่ใช่จากฟิสิคัลคอนโซล คำสั่งถูกเรียกใช้โดยไม่มี nohupและ / หรือ&; มันถูกระงับแล้วด้วยและกลับมาในพื้นหลังด้วยCTRL-Zbg เซสชัน ssh ไม่ได้ลดลง มีการออกจากระบบจริง ( exitคำสั่ง "") กระบวนการนี้เป็นการscpดำเนินการคัดลอกไฟล์ เมื่อเข้าสู่ระบบอีกครั้งแสดงให้เห็นกระบวนการทำงานและเป็นลูกของpstreeinit แก้ไข 2 หากต้องการระบุคำถามให้ชัดเจนยิ่งขึ้น: การวางกระบวนการในพื้นหลัง (โดยใช้&หรือbg) ทำให้ละเว้นSIGHUPเช่นเดียวกับnohupคำสั่งใช่หรือไม่ แก้ไข 3 ฉันลองส่งด้วยตนเองSIGHUPไปที่scp: มันออกแล้วดังนั้นจะไม่เพิกเฉยต่อสัญญาณแน่นอน จากนั้นฉันลองเปิดตัวอีกครั้งวางไว้ในพื้นหลังและออกจากระบบ: …