วิธีที่ดีที่สุดคือเริ่มกระบวนการในเทอร์มินัลมัลติเพล็กเซอร์ หรือคุณสามารถทำให้กระบวนการไม่ได้รับสัญญาณ HUP
Multiplexer ขั้วให้ขั้ว "เสมือน" ที่ทำงานเป็นอิสระจาก "ของจริง" มินัล (ที่จริงอาคารทั้งหมดในวันนี้มี "เสมือน" แต่ที่เป็นหัวข้อสำหรับวันอื่นอีก) เทอร์มินัลเสมือนจะทำงานต่อไปแม้ว่าเทอร์มินัลจริงของคุณจะปิดด้วยเซสชัน ssh ของคุณ
กระบวนการทั้งหมดเริ่มต้นจากเทอร์มินัลเสมือนจะยังคงทำงานกับเทอร์มินัลเสมือนนั้น เมื่อคุณเชื่อมต่อกับเซิร์ฟเวอร์อีกครั้งคุณสามารถเชื่อมต่อกับเทอร์มินัลเสมือนใหม่และทุกอย่างจะเป็นเหมือนไม่มีอะไรเกิดขึ้นนอกเหนือจากเวลาที่ผ่านไป
สอง multiplexers มินัลที่เป็นที่นิยมหน้าจอและtmux
หน้าจอมีเส้นโค้งการเรียนรู้ที่สูงชัน นี่คือบทแนะนำที่ดีพร้อมไดอะแกรมอธิบายแนวคิด: http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
HUPสัญญาณ (หรือ SIGHUP) จะถูกส่งโดย terminal ของทุกกระบวนการที่เด็กเมื่อสถานีถูกปิด การกระทำทั่วไปเมื่อได้รับ SIGHUP คือการยุติ ดังนั้นเมื่อเซสชัน ssh ของคุณถูกตัดการเชื่อมต่อกระบวนการทั้งหมดของคุณจะยุติลง เพื่อหลีกเลี่ยงปัญหานี้คุณสามารถทำให้กระบวนการของคุณไม่ได้รับ SIGHUP
สองวิธีง่ายๆในการทำเช่นนั้นคือnohup
และdisown
.
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการnohup
และdisown
ผลงานอ่านคำถามนี้และตอบ: https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
หมายเหตุ: แม้ว่ากระบวนการจะยังคงทำงานต่อไปคุณจะไม่สามารถโต้ตอบกับมันได้อีกต่อไปเพราะกระบวนการจะไม่ได้เชื่อมต่อกับเทอร์มินัลใด ๆ อีกต่อไป วิธีนี้มีประโยชน์ส่วนใหญ่สำหรับกระบวนการแบ็ตช์ที่ใช้เวลานานซึ่งเมื่อเริ่มต้นแล้วไม่ต้องการอินพุตของผู้ใช้อีกต่อไป
screen
ช่วยให้คุณมีตัวเลือกมากขึ้น แต่ถ้าคุณกำลังใช้authorized_keys
เพื่อให้คนเรียกใช้สคริปต์ระยะไกลผ่านทางssh
ที่nohup
ตัวเลือกเป็นวิธีที่ง่ายที่ดีสำหรับสคริปต์เพื่อเริ่มต้นกระบวนการซึ่งมีอายุยาวนานกว่าssh
เซสชั่นที่ใช้ในการเริ่มต้นพวกเขา .