วันอังคารที่ 29 พฤศจิกายน พ.ศ. 2559

ใช้คำสั่ง screen ใน linux อย่างไร?

ใช้คำสั่ง screen ใน linux อย่างไร?

screen คือคำสั่งในการรัน command linux ต่างๆ แบบเปิดทิ้งไว้ แม้เน็ตจะหลุด คอมจะพัง เราก็ยังสามารถ remote มาเปิด session เดิมได้โดยที่มันไม่หายไปดื้อๆ เหมาะอย่างยิ่งสำหรับคนเน็ตไม่เสถียร มีวิธีใช้งานดังนี้ เช่น
screen mysqldump -uroot -pxxx > backup.sql
วิธีการใช้การก็เพียงแค่พิมพ์คำว่า screen นำหน้าคำสั่งที่เราต้องการ เช่น mysqldump เรารู้ว่ามันนานมาก เลยสั่ง screen ไว้ หากกด CTRL+A คำสั่งเริ่มต้นก่อนจะป้อนคำสั่งอื่นๆ ของ screen ไม่อย่างนั้นจะยังเป็นการสั่งไปยัง process ที่ทำงานภายใน screen ไม่ใช่ตัว screen เช่นเดิม แล้วจะมีคำสั่งต่อดังนี้
d – ออกจากคำสั่ง screen โดยจะเข้าไปดูต่อวันหลังได้
[ - เข้าสู่ copy mode ตรงนี้เมื่อเข้าแล้วจะมีคำสั่งดังต่อไปนี้ (ส่วนใหญ่แทบจะลอกจาก vi มาทั้งดุ้น)
u - ออกจาก copy mode
h - ขยับ cursor ไปทางซ้าย
j - ขยับ cursor ลงข้างล่าง
k - ขยับ cursor ขึ้น
l - ขยับ cursor ลง
G - ขยับ cursor ไปที่ line ที่กำหนด
CTRL+u - เลื่อนขึ้นครึ่งหน้า
CTRL+d - เลื่อนลงครึ่งหน้า
CTRL+b - เลื่อนขึ้นหนึ่งหน้า
CTRL+f - เลื่อนลงหนึ่งหน้า
/ - search จาก cursor ลงไปข้างล่าง (กด n เพื่อ search next)
? - search จาก cursor ขึ้นข้างบน (กด n เพื่อ search next)
และหากกด d เพื่อออกจากคำสั่ง screen ไปแล้ว หรือเน็ตหลุดระหว่าง run screen เราสามารถพิมพ์ "screen -r" เพื่อกลับไปยัง session เดิมที่รันไว้ หรือหากมีหลาย session จะมีข้อความแสดงเช่นดังนี้


There are several suitable screens on:

24146.pts-5.node1       (04/30/13 23:48:40)     (Detached)

23909.pts-5.node1       (04/30/13 23:33:22)     (Detached)

23817.pts-5.node1       (04/30/13 23:27:58)     (Detached)

23647.pts-0.node1       (04/30/13 23:21:36)     (Attached)

Type "screen [-d] -r [pid.]tty.host” to resume one of them.

เราอยากเข้าอันไหนก็พิมพ์ตามที่เค้าบอก เช่น "screen -r 23817.pts-5.node1" ก็จะกลับ session ที่ต้องการได้