วิธีใช้คำสั่งหน้าจอของ Linux

ด้วยscreenคำสั่งLinux คุณสามารถพุชแอพพลิเคชั่นเทอร์มินัลที่รันอยู่เบื้องหลังและดึงไปข้างหน้าเมื่อคุณต้องการดู นอกจากนี้ยังรองรับการแสดงผลแบบแยกหน้าจอและทำงานผ่านการเชื่อมต่อ SSH แม้ว่าคุณจะตัดการเชื่อมต่อและเชื่อมต่อใหม่แล้วก็ตาม!

คำสั่งหน้าจอคืออะไร?

screenคำสั่งเป็น Multiplexer ขั้วและก็เต็มไปด้วยตัวเลือกอย่างแน่นอน จะบอกว่ามันสามารถทำอะไรได้มากมายก็คือคุณปู่ของการพูดน้อย หน้าคนทำงานไปกว่า 4,100 บรรทัด

ต่อไปนี้เป็นกรณีทั่วไปที่คุณจะใช้screenคำสั่งและเราจะกล่าวถึงสิ่งเหล่านี้เพิ่มเติมในบทความนี้:

  • การดำเนินการมาตรฐานคือการสร้างหน้าต่างใหม่โดยมีเชลล์อยู่ในนั้นเรียกใช้คำสั่งจากนั้นดันหน้าต่างไปที่พื้นหลัง (เรียกว่า "การแยก") เมื่อคุณต้องการดูว่ากระบวนการของคุณเป็นอย่างไรคุณสามารถดึงหน้าต่างไปที่พื้นหน้าอีกครั้ง (“ ติดตั้งใหม่”) แล้วใช้อีกครั้ง เหมาะสำหรับกระบวนการที่ยาวนานที่คุณไม่ต้องการยุติโดยไม่ได้ตั้งใจโดยการปิดหน้าต่างเทอร์มินัล
  • เมื่อคุณเริ่มต้นscreenเซสชันแล้วคุณสามารถสร้างหน้าต่างใหม่และเรียกใช้กระบวนการอื่น ๆ ได้ คุณสามารถกระโดดไปมาระหว่างหน้าต่างเพื่อติดตามความคืบหน้าได้อย่างง่ายดาย คุณยังสามารถแบ่งหน้าต่างเทอร์มินัลของคุณออกเป็นแนวตั้งหรือแนวนอนและแสดงscreenหน้าต่างต่างๆของคุณในหน้าต่างเดียว
  • คุณสามารถเชื่อมต่อกับเครื่องระยะไกลเริ่มscreenเซสชันและเรียกใช้กระบวนการ คุณสามารถยกเลิกการเชื่อมต่อจากโฮสต์ระยะไกลเชื่อมต่อใหม่และกระบวนการของคุณจะยังคงทำงานอยู่
  • คุณสามารถแชร์screenเซสชันระหว่างการเชื่อมต่อ SSH ที่แตกต่างกันสองรายการเพื่อให้คนสองคนเห็นสิ่งเดียวกันแบบเรียลไทม์

การติดตั้งหน้าจอ

ในการติดตั้งscreenบน Ubuntu ให้ใช้คำสั่งนี้:

หน้าจอติดตั้ง sudo apt-get

ในการติดตั้ง  screenบน Manjaro ให้ใช้คำสั่งต่อไปนี้:

sudo pacman -Sy หน้าจอ

ใน Fedora คุณพิมพ์สิ่งต่อไปนี้:

หน้าจอติดตั้ง sudo dnf

เริ่มต้นใช้งานหน้าจอ

ในการเริ่มต้นscreenเพียงพิมพ์ตามที่แสดงด้านล่างและกด Enter:

หน้าจอ

คุณจะเห็นหน้าข้อมูลใบอนุญาต คุณสามารถกด Space bar เพื่ออ่านหน้าที่สองหรือ Enter เพื่อกลับไปที่พรอมต์คำสั่ง

คุณอยู่ที่พรอมต์คำสั่งและดูเหมือนจะไม่มีอะไรเกิดขึ้นมากนัก อย่างไรก็ตามคุณกำลังเรียกใช้เชลล์ภายในโปรแกรมจำลองเทอร์มินัลมัลติเพล็กซ์ ทำไมถึงเป็นสิ่งที่ดี? เรามาเริ่มกระบวนการที่ต้องใช้เวลานานกว่าจะเสร็จสมบูรณ์ เราจะดาวน์โหลดซอร์สโค้ดสำหรับเคอร์เนล Linux ล่าสุดและเปลี่ยนเส้นทางไปยังไฟล์ที่เรียกว่าlatest_kernel.zip.

โดยพิมพ์ดังต่อไปนี้:

curl //cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> latest_kernel.zip

การดาวน์โหลดของเราเริ่มต้นขึ้นและcurlผลลัพธ์จะแสดงให้เราเห็นความคืบหน้า

เราไม่สามารถแสดงภาพของบิตถัดไปให้คุณเห็นได้เนื่องจากเป็นลำดับการกดแป้นพิมพ์ คุณพิมพ์ Ctrl + A ปล่อยปุ่มเหล่านั้นจากนั้นกด d เพื่อปลดหน้าจอ

กระบวนการดาวน์โหลดยังคงทำงานอยู่ แต่หน้าต่างที่แสดงการดาวน์โหลดจะถูกลบออก คุณกลับไปที่หน้าต่างเทอร์มินัลที่คุณเปิดscreen เซสชัน ข้อความแจ้งให้คุณทราบว่าscreenหน้าต่างที่มีป้ายกำกับ23167.pts-0.howtogeekถูกถอดออก

คุณต้องใช้หมายเลขจากจุดเริ่มต้นของชื่อหน้าต่างเพื่อติดตั้งใหม่ หากคุณลืมคุณสามารถใช้-lsตัวเลือก (รายการ) ดังที่แสดงด้านล่างเพื่อรับรายการหน้าต่างแยก:

หน้าจอ -ls

เมื่อคุณพร้อมคุณสามารถใช้-rตัวเลือก (แนบใหม่) และจำนวนเซสชันเพื่อแนบกลับเข้าไปใหม่ได้ดังนี้:

หน้าจอ -r 23167

หน้าต่างที่ใช้งานได้ในพื้นหลังจะถูกนำกลับไปที่หน้าต่างเทอร์มินัลของคุณราวกับว่ามันไม่เคยจากไป

หากเป็นกระบวนการที่จะดำเนินไปจนถึงข้อสรุปในที่สุดก็จะเสร็จสมบูรณ์ หากเป็นกระบวนการที่ต่อเนื่องคุณจะต้องยุติกระบวนการในที่สุด ไม่ว่าจะด้วยวิธีใดก็ตามเมื่อกระบวนการสิ้นสุดลงคุณสามารถพิมพ์  exit เพื่อออกจากไฟล์screen. หรือคุณสามารถกด Ctrl + A แล้วกด K เพื่อบังคับให้ฆ่าหน้าต่าง

พิมพ์คำสั่งต่อไปนี้:

ทางออก

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

ที่เกี่ยวข้อง: วิธีใช้ curl เพื่อดาวน์โหลดไฟล์จาก Linux Command Line

ใช้ Named screen Sessions

คุณสามารถใช้-Sตัวเลือก (ชื่อเซสชัน) เพื่อตั้งชื่อscreenเซสชันของคุณ หากคุณใช้ชื่อที่น่าจดจำแทนที่จะเป็นตัวเลขประจำตัวของเซสชันการเชื่อมต่อกับเซสชันใหม่จะสะดวกกว่า เราพิมพ์ข้อความต่อไปนี้เพื่อตั้งชื่อเซสชันของเราว่า“ bigfile”:

หน้าจอ -S bigfile

เมื่อscreenเปิดเซสชันของเราเราจะเห็นหน้าต่างว่างพร้อมรับคำสั่ง เรากำลังจะดาวน์โหลดไฟล์ขนาดใหญ่เพื่อให้เราสามารถใช้กระบวนการที่ใช้งานได้ยาวนานเป็นตัวอย่าง

เราพิมพ์สิ่งต่อไปนี้:

curl //ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip

เมื่อการดาวน์โหลดเริ่มขึ้นให้กด Ctrl + A แล้วกด D เพื่อแยกเซสชันออก เราพิมพ์สิ่งต่อไปนี้เพื่อใช้-lsตัวเลือก (รายการ) screenเพื่อดูรายละเอียดของเซสชันเดี่ยวของเรา:

หน้าจอ -ls

ด้านหลังตัวระบุตัวเลข (23266) เราจะเห็นชื่อเซสชันของเรา (bigfile) เราพิมพ์สิ่งต่อไปนี้รวมถึงชื่อเซสชันเพื่อแนบกลับเข้าไปใหม่:

หน้าจอ -r bigfile

เรากำลังเชื่อมต่อกับหน้าต่างดาวน์โหลดของเราอีกครั้งและเห็นว่าการดาวน์โหลดแบบยาวยังอยู่ระหว่างดำเนินการ

เมื่อการดาวน์โหลดเสร็จสมบูรณ์เราพิมพ์exitเพื่อปิดหน้าต่างเซสชัน

การใช้หน้าจอกับหลาย Windows

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

เราพิมพ์ข้อความต่อไปนี้เพื่อเริ่มเซสชันหน้าจอที่เรียกว่า "มอนิเตอร์":

หน้าจอ -S จอภาพ

ที่พรอมต์คำสั่งในเซสชันหน้าต่างใหม่ของเราเราจะเปิดdmesg และใช้ตัวเลือก-H(มนุษย์อ่านได้) และ-w(รอข้อความใหม่) สิ่งนี้จะแสดงข้อความบัฟเฟอร์เคอร์เนล ข้อความใหม่จะปรากฏขึ้นเมื่อเกิดขึ้น

เราพิมพ์สิ่งต่อไปนี้:

dmesg -H -w

ข้อความที่มีอยู่จะปรากฏขึ้น เราจะไม่กลับไปที่พรอมต์คำสั่งเนื่องจากdmsegกำลังรอข้อความใหม่และจะแสดงข้อความเหล่านั้นเมื่อมาถึง

ที่เกี่ยวข้อง: วิธีใช้คำสั่ง dmesg บน Linux

เราต้องการเรียกใช้แอปพลิเคชันอื่นดังนั้นเราจึงต้องมีscreen หน้าต่างใหม่ เรากด Ctrl + A แล้วกด C เพื่อสร้างหน้าต่างใหม่ เราจะใช้watchเพื่อเรียกใช้ซ้ำ ๆvmstatดังนั้นเราจึงได้รับการอัปเดตการแสดงการใช้หน่วยความจำเสมือนบนคอมพิวเตอร์ของเราบ่อยครั้ง

ที่พรอมต์คำสั่งใหม่เราพิมพ์สิ่งต่อไปนี้:

ดู vmstat

vmstatเอาท์พุทจะปรากฏขึ้นและอัพเดททุกสองวินาที

กระบวนการทั้งสองของเรากำลังทำงานอยู่ หากต้องการกระโดดไปมาระหว่าง  screenหน้าต่างให้คุณกด Ctrl + A และหมายเลขของหน้าต่าง อันแรกที่เราสร้างคือหน้าต่างศูนย์ (0) ถัดไปคือหน้าต่าง 1 และอื่น ๆ หากต้องการกระโดดไปที่หน้าต่างแรก (หน้าต่างdmesg) ให้กด Ctrl + A และ 0

ถ้าเรากด Ctrl + A และ 1 มันจะพาเรากลับไปที่vmstatหน้าต่าง

สวยดี! เราสามารถกด Ctrl + A แล้วกด D เพื่อแยกออกจากเซสชันนี้ เราสามารถแนบใหม่ได้ในภายหลัง ทั้งสองเซสชันจะยังคงทำงานอยู่ อีกครั้งในการสลับไปมาระหว่างหน้าต่างเรากด Ctrl + A และหมายเลข (0 หรือ 1) ของหน้าต่างที่เราต้องการเปลี่ยนไป

ไปที่ขั้นตอนต่อไปและดูทั้งสองหน้าจอในหน้าต่างเดียว เมื่อทำเช่นนี้คุณจะขยายหน้าต่างเทอร์มินัลให้มีขนาดที่ทำให้ขั้นตอนนี้มีประโยชน์ ตัวอย่างของเรามีข้อ จำกัด เกี่ยวกับขนาดของภาพหน้าจอดังนั้นหน้าต่างของเราจะดูแคบเล็กน้อย

ในการดำเนินการนี้ให้เรากด Ctrl + A จากนั้น Shift + S (ต้องใช้ตัวพิมพ์ใหญ่ "S")

หน้าต่างแบ่งออกเป็นสอง "ภูมิภาค"

พื้นที่ด้านบนยังคงแสดงvmstatและพื้นที่ด้านล่างว่างเปล่า เคอร์เซอร์ถูกไฮไลต์ในภาพหน้าจอด้านล่าง หากต้องการย้ายไปยังพื้นที่ด้านล่างให้กด Ctrl + A แล้วกด Tab

เคอร์เซอร์จะเลื่อนไปที่บริเวณด้านล่างซึ่งจริงๆแล้วเป็นเพียงพื้นที่ว่าง มันไม่ใช่เปลือกดังนั้นเราจึงไม่สามารถพิมพ์อะไรลงไปได้ เพื่อให้ได้การแสดงผลที่มีประโยชน์เรากด Ctrl + A จากนั้นกด“ 0” เพื่อแสดงdmesgหน้าต่างในภูมิภาคนี้

สิ่งนี้ทำให้เรามีทั้งเอาต์พุตสดในหน้าต่างแยกเดียว หากเรากด Ctrl + A และ D เพื่อถอดหน้าต่างออกจากนั้นแนบกลับเข้าไปใหม่เราจะสูญเสียมุมมองแบบแบ่งบานหน้าต่าง อย่างไรก็ตามเราสามารถกู้คืนได้ด้วยแป้นพิมพ์ลัดต่อไปนี้:

  • Ctrl + A, S:แบ่งหน้าต่างตามแนวนอน
  • Ctrl + A , Tab:ย้ายไปที่ส่วนล่าง
  • Ctrl + A, 0:แสดงหน้าต่างเป็นศูนย์ในพื้นที่ด้านล่าง

เราสามารถก้าวไปอีกขั้น ตอนนี้เราจะแบ่งบานหน้าต่างด้านล่างในแนวตั้งและเพิ่มกระบวนการที่สามในการแสดงผล ด้วยเคอร์เซอร์ในพื้นที่ด้านล่างเรากด Ctrl + A และ C เพื่อสร้างหน้าต่างใหม่ที่มีเชลล์อยู่ พื้นที่ด้านล่างจะแสดงหน้าต่างใหม่และให้คำสั่งแก่เรา

ต่อไปเราจะเรียกใช้dfคำสั่งเพื่อตรวจสอบการใช้งานระบบไฟล์:

df

เมื่อเราเห็นdfการทำงานเรากดปุ่ม Ctrl + A (|)และตัวอักษรท่อ ซึ่งจะแยกส่วนล่างในแนวตั้ง เรากด Ctrl + A และ Tab เพื่อย้ายไปยังพื้นที่ใหม่ ต่อไปเรากด Ctrl + A และ 0 เพื่อแสดงdmesgหน้าต่าง

คุณยังสามารถย้ายจากภูมิภาคหนึ่งไปยังอีกภูมิภาคหนึ่งและเพิ่มการแยกแนวตั้งหรือแนวนอนได้อีกด้วย ต่อไปนี้คือคีย์ผสมที่มีประโยชน์มากขึ้น:

  • Ctrl + A:กระโดดไปมาระหว่างภูมิภาคปัจจุบันและภูมิภาคก่อนหน้า
  • Ctrl + A, Q:ปิดทุกภูมิภาคยกเว้นภูมิภาคปัจจุบัน
  • Ctrl + A, X:ปิดพื้นที่ปัจจุบัน

การใช้หน้าจอผ่าน SSH

ด้วยscreenคุณสามารถเริ่มเซสชันหน้าต่างถอดออกเพื่อให้ยังคงทำงานในพื้นหลังออกจากระบบหรือย้อนกลับและแนบเซสชันใหม่

มาทำการเชื่อมต่อ SSH กับคอมพิวเตอร์ของเราจากเครื่องอื่นด้วย  ssh คำสั่ง เราต้องระบุชื่อบัญชีที่เราจะเชื่อมต่อและที่อยู่ของคอมพิวเตอร์ระยะไกล

สำหรับตัวอย่างของเราเราพิมพ์สิ่งต่อไปนี้:

ssh [email protected]

หลังจากที่เราตรวจสอบสิทธิ์บนคอมพิวเตอร์ระยะไกลและเข้าสู่ระบบแล้วเราจะพิมพ์ข้อความต่อไปนี้เพื่อเริ่มscreenเซสชันชื่อ“ ssh-geek”:

หน้าจอ -S ssh-geek

เพื่อจุดประสงค์ในการสาธิตเราจะเรียกใช้  top ในscreenหน้าต่างนี้ แต่คุณสามารถเริ่มกระบวนการที่ดำเนินไปอย่างยาวนานหรือไม่มีที่สิ้นสุด

เราพิมพ์สิ่งต่อไปนี้:

ด้านบน

เมื่อ  topทำงานในหน้าต่างเรากด Ctrl + A แล้วกด D เพื่อแยกหน้าต่างออก

เรากลับไปที่หน้าต่างเทอร์มินัลระยะไกลดั้งเดิม

หากเราพิมพ์exitดังที่แสดงด้านล่างจะเป็นการตัดการเชื่อมต่อเซสชัน SSH และเรากลับมาที่คอมพิวเตอร์ในระบบของเรา:

ทางออก

เราพิมพ์สิ่งต่อไปนี้เพื่อเชื่อมต่อใหม่:

ssh [email protected]

หลังจากที่เราเชื่อมต่อและเข้าสู่ระบบใหม่แล้วเราสามารถพิมพ์สิ่งต่อไปนี้เพื่อแนบscreenเซสชันใหม่:

หน้าจอ -r ssh-geek

ตอนนี้เราเชื่อมต่ออีกครั้งกับอินสแตนซ์ที่ยังคงทำงานอยู่ของtop.

นี่เป็นวิธีที่ดีหากคุณต้องการเริ่มต้นกระบวนการบนเครื่องหนึ่งจากนั้นทำทุกที่ที่คุณทำค้างไว้บนเครื่องอื่น

ที่เกี่ยวข้อง: วิธีสร้างและติดตั้งคีย์ SSH จาก Linux Shell

การแบ่งปันเซสชันหน้าจอ

คุณยังสามารถใช้screenเซสชันเพื่อให้คนสองคนเห็นและโต้ตอบกับหน้าต่างเดียวกันได้ สมมติว่ามีคนใช้งาน Fedora บนคอมพิวเตอร์ของเขาต้องการเชื่อมต่อกับเซิร์ฟเวอร์ Ubuntu ของเรา

เขาจะพิมพ์ดังต่อไปนี้:

ssh [email protected]

หลังจากเชื่อมต่อแล้วเขาจะเริ่มเซสชันหน้าจอชื่อ“ ssh-geek” โดยใช้ตัวเลือก -S (ชื่อเซสชัน) เขายังใช้ตัวเลือก-d(แยก) และ  -m(บังคับให้สร้าง) เพื่อสร้างscreenเซสชันใหม่ที่แยกออกแล้ว

เขาพิมพ์สิ่งต่อไปนี้:

หน้าจอ -d -m -S ssh-geek

เขาพิมพ์สิ่งต่อไปนี้โดยใช้-Xตัวเลือก (โหมดหลายหน้าจอ) เพื่อแนบเซสชัน:

หน้าจอ -X ssh-geek

บนคอมพิวเตอร์ Manjaro บุคคลอื่นจะเชื่อมต่อกับคอมพิวเตอร์ Ubuntu ด้วยข้อมูลรับรองบัญชีเดียวกันดังที่แสดงด้านล่าง:

ssh [email protected]

เมื่อเธอเชื่อมต่อแล้วเธอก็พิมพ์  screenคำสั่งและใช้ตัวเลือก -X (โหมดหลายหน้าจอ) เพื่อเข้าร่วมเซสชันหน้าต่างเดียวกันดังนี้:

หน้าจอ -X ssh-geek

ตอนนี้สิ่งที่คนทั้งสองประเภทจะเห็น ตัวอย่างเช่นเมื่อบุคคลหนึ่งออกคำสั่ง date ทั้งสองคนจะเห็นคำสั่งนี้ตามที่พิมพ์อยู่

ทั้งสองคนกำลังแชร์screenเซสชันที่ทำงานบนคอมพิวเตอร์ Ubuntu ระยะไกล

สำหรับซอฟต์แวร์ชิ้นแรกที่เห็นแสงสว่างของวันในปี 1987 screen ยังคงมีผลผลิตที่ดี การทำความคุ้นเคยกับมันจะใช้เวลาได้ดี!

ที่เกี่ยวข้อง: 37 คำสั่ง Linux ที่สำคัญที่คุณควรรู้