screen
เอามาจาก ThaiLinuxCafe - bash tips
จิ๊กมาจากบล๊อกคุณพูลลาภเรื่อง คุณเปิด terminal กี่บาน? ท่านเขียนไว้ดีมาก ๆ
screen เป็น virtual terminal มีประโยชน์มากในการใช้งานผ่าน ssh ข้อดีคือเวลาเรากลับเข้าไปในงานที่ทำค้างอยู่ มันจะเห็นเหมือนกับเราทำที่จุดนั้นจริง ๆ สมมุติเราคอมไพล์งานค้างไว้ ถ้ามีข้อผิดพลาด มันจะแสดงให้เห็นข้อผิดพลาดนั้นด้วย ที่สำคัญคือมันเป็น text mode จึงทำงานเร็วและไม่เปลืองแบนด์วิดท์
สั่งเริ่ม screen
$ screen
คีย์ลัดที่ใช้บ่อย
C-a c
= สร้างเชลล์ใหม่C-a n
= ไปเทอร์มินัลถัดไป ( ที่ยัง attach อยู่ )C-a p
= ไปเทอร์มินัลก่อนหน้า ( ที่ยัง attach อยู่ )C-a d
= detach เชลล์ปัจจุบัน ( กลับมาด้วยคำสั่ง screen -r )C-a "
= ดูเทอร์มินัลทั้งหมด ( คล้ายคำสั่ง screen -ls )C-a 0
= ไปเทอร์มินัล 0C-a 1
= ไปเทอร์มินัล 1C-a S
= แบ่งเทอร์มินัลแบบแนวตั้ง
(*หมายเหตุ C-a
คือกด Ctrl+a )
ดูเชลล์ที่มี
$ screen -ls
ไป attach เชลล์ที่ถูก detach
ถ้ามีแค่เชลล์เดียว
$ screen -r
ถ้ามีหลายเชลล์
$ screen -r [pid.]tty[.host]
ปรับแต่งลักษณะของ screen ด้วยไฟล์ ~/.screenrc
$ vi ~/.screenrc
# ไม่เอาข้อความต้อนรับ startup_message off # ตั้งค่า scroll มากกว่าค่าปริยาย (100) defscrollback 1024 # ทำให้มีแถบ 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
ดูเพิ่มเติมได้ที่ gentoo-wiki: TIP Using screen ถ้าใช้แล้วติดใจ อยากเวียนหัวเพิ่ม ให้ดู man screen
ตัวอย่างการใช้งาน
สมมุติว่าต้องการแก้ธีมของ drupal ที่เครื่อง server1.example.com
เราติดตั้ง drupal ไว้ที่ /var/www/drupal
สมมุติว่าเป็นธีม newsportal ไฟล์ที่ต้องการแก้ไขหลัก ๆ จะมีสองไฟล์ คือ style.css
และ page.tpl.php
อยู่ใน /var/www/drupal/themes/newsportal/
เราจะเข้าถึง server1 ด้วยการใช้ ssh ปกติ
$ ssh server1.example.com -l webmaster
สั่งรัน screen
$ screen
กด space bar ตามปกติ
ตอนนี้เราจะอยู่ในเทอร์มินัล 0 แต่ผมนิยมเว้นเทอร์มินัล 0 ไว้สำหรับงานจิปาถะชั่วคราว และใช้เทอร์มินัล 1 ในการแก้ไขไฟล์ style.css
และใช้เทอร์มินัล 2 ในการแก้ไฟล์ page.tpl.php
กด C-a c
เพื่อสร้างเทอร์มินัล 1
$ cd /var/www/drupal/themes/newsflash $ vi style.css
กด C-a c
เพื่อสร้างเทอร์มินัล 2
$ cd /var/www/drupal/themes/newsflash $ vi page.tpl.php
หลังจากนี้เราสามารถสลับงานไปมาด้วยการกด C-a สองครั้ง มันจะสลับไปมาระหว่างเทอร์มินัล 1 และ 2
ถ้าเราปิด ssh โดยไม่ออกจาก screen เมื่อเข้ามาใหม่ เราสามารถเข้ามาที่งานที่ทำค้างไว้ได้เลย ด้วยคำสั่ง screen -r
หรือถ้าเราทำงานค้างไว้ที่ทำงาน และยังเปิด ssh ค้างอยู่ และเรากลับไปต่องานที่บ้าน เราสามารถช่วงชิง screen ที่ยังค้างอยู่ที่ทำงานมาด้วยคำสั่ง screen -d -r
จบแล้วครับ ใครมีทิป screen ดี ๆ แบ่งกันบ้างนะครับ
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |
Comments
screen tip: screenrc และการสั่งงานด้วยบรรทัดคำสั่ง
on 6 February, 2011 - 19:49 Permalink
ต้องการให้เมื่อเริ่ม screen ทุกครั้ง จะสั่งเปิด 3 หน้าต่างคือแสดง top, syslog, และ dmesg ตามลำดับ โดยตั้งชื่อ session ว่า
norm
ใช้การแก้ไขไฟล์
~/.screenrc
ดังนี้รัน screen
จะได้ผลตามต้องการ
ต้องการให้ screen เริ่มงานแบบข้างต้น เฉพาะเมื่อเราต้องการ
จะใช้การทำงานผ่านสคริปต์ ดังนี้
สมมุติตั้งชื่อสคริปต์ว่า screen_monitor.sh
เปลี่ยนสิทธิ์และสั่งรัน
จะไม่เห็นการเปลี่ยนแปลง เพราะเราสั่งให้ทำงานแบบเบื้องหลัง (
-md
)จะเข้าไปสู่ (
attach
) การทำงานของ screen ได้ด้วยคำสั่งจบแล้วครับ
Re: screen
on 22 July, 2011 - 11:26 Permalink
หลังจากใช้ Screen มาหลายปี ตอนนี้ผมเปลี่ยนมาใช้ Byobu แล้วครับ ซึ่งมันก็คือ Screen ที่เพิ่ม config เจ๋งๆ เช่น สถานะต่างๆ ของระบบ โดยมันจะแสดงไว้ตรง hardstatus bar ครับ สามารถปรับเปลี่ยนได้ตามความชอบ
สำหรับคนที่อยากใช้คำสั่ง screen แต่อยากได้ profile ของ byobu ก็สามารถระบุ "source ~/.byobu/profile" ไว้ใน ~/.screenrc ได้