คำสั่ง screen

คำสั่ง screen เป็น command line Linux ที่ช่วยรัน process ในรูปแบบ background ทำให้เราสามารถปิดหน้าจอ terminal ได้โดยที่ program หรือ process นั้นไม่ปิดตัวลง หากเรารัน process ผ่าน terminal แบบปรกติ เมื่อมีการปิด terminal หรือออกจาก putty (กรณีรีโมท) process นั้นจะถูกปิดอัตโนมัติทันทีครับ ในบทความนี้ผมจะมาแนะนำการใช้คำสั่ง screen เบื้องต้นบน vps server ubuntu

อันดับแรกติดตั้ง package screen

sudo apt-get update
sudo apt-get install screen

การเรียกใช้คำสั่ง screen

คำสั่ง run screen

screen -S ชื่อที่เราตั้ง

คำสั่งตรวจสอบว่ามี screen เปิดอยู่เท่าไร

screen -ls

คำสั่งปิด screen ที่ต้องการ

screen -X -S ชื่อ quit

คำสั่งปิด screen ทั้งหมด

pkill screen

คำสั่งเข้าไปดู screen ที่เปิดไว้

screen -r ชื่อที่เราตั้ง

หากต้องการกลับสู่หน้าจอ terminal หลัก ให้กด ctrl ค้าง และ ปุ่ม a+d

เทคนิคการรัน screen แบบไฟล์

การสั่งรัน screen ถ้าหากเรารันแค่ 1-2 process คงไม่มีปัญหาเท่าไร แต่หากเราจำเป็นต้องรัน 5-10 process หรือมากนี้ เราต้องมาสั่งรันทีละบรรทัด แบบนี้ตลอดคงจะไม่ดีแน่ ดังนั้นผมมีตัวช่วยคือการสร้างไฟล์ไว้รัน process screen โดยตรงเลยจะดีกว่า

อันดับแรกสร้างไฟล์

nano runscreen

ในตัวอย่างไฟล์นี้ ผมจะใช้คำสั่ง screen ในการรันไฟล์ php ไว้ 8 ไฟล์ โดยกำหนดให้มันรัน loop ต่อเนื่อง ด้วยคำสั่ง while true และให้ delay เป็น sleep 1 ครับ เสร็จแล้วกด ctrl+o เพื่อ save ไฟล์ nano และกด ctrl+x เพื่อออกจาก nano

#!/bin/bash
screen -mdS r1 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r2 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r3 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r4 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r5 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r6 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done" 
screen -mdS r7 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done"
screen -mdS r8 sh -c "while true; do php /home/ที่อยู่ของไฟล์ php; sleep 1; done"

ใช้คำสั่ง chmod กำหนด Permission ให้ไฟล์

chmod +x runscreen

เสร็จเรียบร้อยครับ หากต้องการรัน screen ผมแค่สั่งรัน command ด้วย

./runscreen

เพียงเท่านี้ screen ก็จะถูกรันขึ้นมา ทั้ง 8ไฟล์

เพิ่มเติม

การสั่งรัน screen หลายไฟล์จำเป็นต้องใช้ cpu,ram ในปริมาณที่เยอะขึ้น ดังนั้นต้องคำนวนด้วยครับว่าสเปกเครื่อง server ของเรามี cpu และ ram เยอะพอไหม?

LEAVE A REPLY

Please enter your comment!
Please enter your name here