เป็นความคิดที่ดีหรือไม่ที่จะนำ“ screen -r” ใน. bashrc ของฉัน


17

ฉันต้องการใช้หน้าจอเพื่อให้เซสชัน SSH มีชีวิตอยู่บนเซิร์ฟเวอร์ของฉัน มันจะดีถ้าฉันสามารถกลับมาทำงานเซสชันใด ๆ โดยอัตโนมัติสำหรับผู้ใช้ของฉันเมื่อฉันเข้าสู่ระบบวิธีที่ตรงไปตรงมาในการทำเช่นนี้จะเพิ่ม "screen -r" เพื่อ. bashrc ของฉันและดูเหมือนว่าจะทำงานได้ดี ฉันแค่สงสัยว่าสิ่งนี้จะทำลายสิ่งใดภายใต้เงื่อนไขที่ฉันยังไม่ได้ทดสอบ ใครที่มีประสบการณ์ตรงนี้ใครสามารถบอกฉันได้ว่านี่คือสิ่งที่ฉันควรทำอย่างไร

คำตอบ:


20

คุณต้องscreen -R -dแนบทั้งสองโดยอัตโนมัติไปยังเซสชันที่มีอยู่หากมีอยู่และสร้างเซสชันอื่น

ตรวจสอบให้แน่ใจว่าคุณทำเช่นนี้กับเชลล์แบบโต้ตอบเท่านั้น Bash ซอร์ส~/.bashrcแม้สำหรับเชลล์ที่ไม่มีการโต้ตอบเมื่อโปรเซสหลักคือ rshd หรือ sshd (สิ่งนี้ถูกกล่าวถึงในเอกสารประกอบ แต่มันง่ายที่จะพลาด) คุณสามารถบอกได้เปลือกเป็นแบบโต้ตอบเพราะมี$-i

case $- in
  *i*) screen -Rd;;
esac

วิธีนี้จะไม่ช่วยให้คุณเรียกใช้เซสชันหน้าจอที่แตกต่างกันในเทอร์มินัลต่างๆ

คุณจะต้องแยกออกจากหน้าจอจากนั้นออกจากเปลือกหลักเพื่อออกจากระบบ นี้สามารถแก้ไขได้โดยใช้แทนexec screenscreen

หากคุณเริ่มเชลล์อื่นที่ไม่ใช่เชลล์ล็อกอินคุณจะเข้าสู่หน้าจอซึ่งไม่ใช่สิ่งที่คุณต้องการเป็นส่วนใหญ่ อย่างน้อยฉันจะ จำกัด นี้เมื่อคุณทำงานโดยตรงในเซสชัน ssh แบบโต้ตอบกับสิ่งต่อไปนี้ในของคุณ~/.bash_profile:

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

ระวังเมื่อคุณทำสิ่งที่ซับซ้อนโดย.bashrcมีข้อผิดพลาดที่ทำให้เปลือกออกจากนั้นจะทำให้การเข้าสู่ระบบเป็นเรื่องยาก


สิ่งที่ฉันแนะนำคือการไม่แก้ไขไฟล์การเริ่มต้นเชลล์ของคุณบนเซิร์ฟเวอร์ แต่แทนที่จะเรียกใช้หน้าจออย่างชัดเจนจากไคลเอนต์เช่นเดียวกับใน

ssh -t host.example.com screen -R -d

(คุณอาจสร้างเชลล์นามแฝงหรือทางลัดสภาพแวดล้อมเดสก์ท็อปบนไคลเอนต์) วิธีที่คุณสามารถเลือกที่จะไม่เรียกใช้หน้าจอระบุชื่อเซสชันสำรองและอื่น ๆ ได้อย่างง่ายดาย


สมบูรณ์ ควรอยู่ในหน้าคน
marcusw

มันจะไม่ดีกว่าสำหรับ ssh ที่จะทำงานscreen -D -Rหรือแม้กระทั่งscreen -D -RR?
niutech

2

สคริปต์เริ่มต้นเซิร์ฟเวอร์ X ของคุณมักจะเริ่มเชลล์ใหม่เช่นหากคุณลงชื่อเข้าใช้ด้วย gdm โดยใช้ "เซสชันที่กำหนดโดยผู้ใช้"

ฉันคิดว่าทุกอย่างที่ไม่ออกอาจทำให้การเริ่มต้น X ค้างไว้ นั่นก็รวมscreen -rไปถึง


X .bashrcสคริปต์เริ่มต้นเซิร์ฟเวอร์จะไม่ทำงาน แต่มีสถานการณ์อื่น ๆ ที่อาจเป็นปัญหาตัวอย่างเช่นเมื่อทำงานssh host.example.com somecommand(แปลกแล้วทุบตีจะทำงาน.bashrcแล้ว)
Gilles 'หยุดชั่วร้าย'

มันอยู่ในความผิดพลาดบางอย่างถ้าคุณเลือก "เซสชันที่กำหนดโดยผู้ใช้" บน Ubuntu มันเป็นแหล่งที่มาของ. profile อย่างชัดเจนคนอื่นเรียกว่า. xsession จากภายในเชลล์ล็อกอินซึ่งโดยทั่วไปจะหมายถึง. bash_profile และผู้ใช้ส่วนใหญ่จะเป็น. bashrc จากภายใน. bash_profile ของพวกเขา
มิเคล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.