เหตุใด“ su -c <command> &” จึงอนุญาตให้คำสั่งทำงานในพื้นหลังโดยไม่ต้องวางสาย
ฉันช่วยเพื่อนร่วมงานที่กำลังมีปัญหากับกระบวนการพื้นหลังที่กำลังจะตายเป็นระยะ ฉันพบว่าพวกเขาเริ่มกระบวนการพื้นหลังด้วยการเข้าสู่เซิร์ฟเวอร์และดำเนินการ: su - <user> -c '<command>' & "Aha" ฉันอุทาน "ถ้าคุณเริ่มต้นคำสั่งด้วย" & "คำสั่งจะวางสายเมื่อคุณออกจากเทอร์มินัลการควบคุมคุณต้องใช้บางอย่างเช่น nohup เพื่อให้บรรลุสิ่งนี้จริง ๆ แล้วกระบวนการนี้ต้องรองรับการทำงานเป็น daemon, tut tut" เราทดสอบคำสั่งข้างต้นเพื่อแสดงให้เห็นถึงจุดของฉันและ ... มันดูเหมือนจะทำงาน: กระบวนการเริ่มต้นโดยคำสั่งไม่ได้ออกเมื่อเราออกจากสถานีที่วิ่งคำสั่งดังกล่าว commandเป็นสคริปต์ Python ที่กำหนดเองซึ่งเอาต์พุตไปที่ไฟล์ เท่าที่ฉันสามารถบอกได้ไม่มี "daemonize" ที่ชาญฉลาดเหมือนความสามารถในสคริปต์ มันไม่ได้ทำสิ่งใด ๆ ที่จำเป็นในการใช้งานเป็น daemon ที่ระบุไว้ในWikipedia: Daemon (คำนวณ):หน้าสร้าง การรันคำสั่งเช่นนั้นจะทำงานตามที่คาดไว้: <command> & exit ในกรณีข้างต้นกระบวนการพื้นหลังเริ่มต้นโดยคำสั่งออกเมื่อเราออกจากสถานี คำถามของฉันคือ: เกิดอะไรขึ้นเมื่อเราเพิ่ม "su - -c &" ที่ป้องกันไม่ให้กระบวนการออกจากเมื่อเครื่องของเราออก ฉันต้องการที่จะเข้าใจในรายละเอียดเกี่ยวกับสถานีควบคุมอินพุตมาตรฐานและเอาท์พุท …