คุณต้องscreen -R -d
แนบทั้งสองโดยอัตโนมัติไปยังเซสชันที่มีอยู่หากมีอยู่และสร้างเซสชันอื่น
ตรวจสอบให้แน่ใจว่าคุณทำเช่นนี้กับเชลล์แบบโต้ตอบเท่านั้น Bash ซอร์ส~/.bashrc
แม้สำหรับเชลล์ที่ไม่มีการโต้ตอบเมื่อโปรเซสหลักคือ rshd หรือ sshd (สิ่งนี้ถูกกล่าวถึงในเอกสารประกอบ แต่มันง่ายที่จะพลาด) คุณสามารถบอกได้เปลือกเป็นแบบโต้ตอบเพราะมี$-
i
case $- in
*i*) screen -Rd;;
esac
วิธีนี้จะไม่ช่วยให้คุณเรียกใช้เซสชันหน้าจอที่แตกต่างกันในเทอร์มินัลต่างๆ
คุณจะต้องแยกออกจากหน้าจอจากนั้นออกจากเปลือกหลักเพื่อออกจากระบบ นี้สามารถแก้ไขได้โดยใช้แทนexec screen
screen
หากคุณเริ่มเชลล์อื่นที่ไม่ใช่เชลล์ล็อกอินคุณจะเข้าสู่หน้าจอซึ่งไม่ใช่สิ่งที่คุณต้องการเป็นส่วนใหญ่ อย่างน้อยฉันจะ จำกัด นี้เมื่อคุณทำงานโดยตรงในเซสชัน ssh แบบโต้ตอบกับสิ่งต่อไปนี้ในของคุณ~/.bash_profile
:
case "/$(ps -p $PPID -o comm=)" in
*/sshd) screen -R -d;;
esac
ระวังเมื่อคุณทำสิ่งที่ซับซ้อนโดย.bashrc
มีข้อผิดพลาดที่ทำให้เปลือกออกจากนั้นจะทำให้การเข้าสู่ระบบเป็นเรื่องยาก
สิ่งที่ฉันแนะนำคือการไม่แก้ไขไฟล์การเริ่มต้นเชลล์ของคุณบนเซิร์ฟเวอร์ แต่แทนที่จะเรียกใช้หน้าจออย่างชัดเจนจากไคลเอนต์เช่นเดียวกับใน
ssh -t host.example.com screen -R -d
(คุณอาจสร้างเชลล์นามแฝงหรือทางลัดสภาพแวดล้อมเดสก์ท็อปบนไคลเอนต์) วิธีที่คุณสามารถเลือกที่จะไม่เรียกใช้หน้าจอระบุชื่อเซสชันสำรองและอื่น ๆ ได้อย่างง่ายดาย