Screen สำหรับ Remote SSH Session

ใช้ screen มานานหลายปี จนหลังๆ เห็นคนนิยมเปลี่ยนไปใช้ tmux กันมากแล้ว แต่ก็ยังติด screen อยู่

เรื่องของเรื่องคือการ remote ssh ไปยัง linux servers ใดๆ เพื่อไปรันคำสั่งอะไรบางอย่าง บางทีเราอยากรันอะไรค้างไว้ หรือ บางที network ไม่ stable ทำอะไรอยู่ค้างๆ อยู่แล้วหลุด วิธีแก้ง่ายๆ ก็คือ รัน screen เอาไว้ก่อน ซึ่งจะเสมือนหน้าจอเสมือนของเราที่ logged on ค้างไว้อยู่บน server, การสั่งคำสั่งทำงานอะไร มันก็จะอยู่ภายใต้ screen ต่อให้ network หลุดไป กลับมาใหม่ ก็จะเห็นหน้าจอเดิม ทำงานต่อได้

default configuration ของ screen จะใช้ key CTRL-A ซึ่งจะชนกับ short-cut keyboard ที่เอาไว้สำหรับเลื่อนไปต้นบรรทัด และ default หน้าจอก็จะไม่ค่อยสวยงาม

วิธีแก้ให้สร้างไฟล์ ~/.screenrc ที่มีเนื้อหาตามด้านล่างนี้ เพื่อเปลี่ยน key ที่ใช้เป็น CTRL-T และให้มี Status bar สวยๆ ด้านล่าง

ตัวอย่างหน้าจอ screeen

ตัวอย่าง .screenrc (ลอกจากของคุณพูลลาภ วีระธนาบุตร นานมาแล้ว

startup_message off


#  scroll  (100)
defscrollback 200


#  status
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "


#  Ctrl+t  Ctrl+a
escape ^Ta

วิธีใช้งานเบื้องต้น

  • เข้าใช้ครั้งแรกสั่งว่า
screen
  • ปุ่มที่ใช้บ่อยๆ
    • CTRL-T + C = Create สร้างหน้าจอใหม่
    • CTRL-T + P = Previous ไปหน้าจอด้านซ้าย
    • CTRL-T + N = Next ไปหน้าจอด้านขวา
    • CTRL-T + 2 = ไปหน้าจอที่ 2 (ระบุตัวเลขหน้าจอเอาเลย)
    • CTRL-T + K = Kill ทิ้งหน้าจอปัจจุบัน
  • จะเลิกใช้ชั่วคราว กด CTRL-T + D = Detach ออกจาก screen
  • เข้าครั้งต่อไปพิมพ์
screen -rd

จะเลิกใช้ ก็ exit หรือ kill ทุกหน้าจอมาเรื่อยๆ จนหมด แล้วก็ exit อันสุดท้ายมันก็จะหลุดจาก screen โดยอัตโนมัติ

Leave a comment