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

เผยแพร่แล้ว: 2022-01-29
เทอร์มินัล Linux บนแล็ปท็อปที่มีเซสชันเทอร์มินัลอื่นซ้อนทับอยู่ด้านหลัง
fatmawati achmad zaenuri/Shutterstock

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

ที่เกี่ยวข้อง: 10 คำสั่ง Linux พื้นฐานสำหรับผู้เริ่มต้น

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

คำสั่ง screen เป็นเทอร์มินัลมัลติเพล็กเซอร์ และมันเต็มไปด้วยตัวเลือกมากมาย การพูดสามารถทำได้มากคือคุณปู่ของการพูดน้อย หน้าคนมีมากกว่า 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 เพื่ออ่านหน้าที่ 2 หรือ Enter เพื่อกลับไปที่พรอมต์คำสั่ง

โฆษณา

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

ในการทำเช่นนั้น เราพิมพ์ดังต่อไปนี้:

 curl https://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 (reattach) และจำนวนเซสชันเพื่อเชื่อมต่อใหม่ได้ ดังนี้:

 หน้าจอ -r 233167 

โฆษณา

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

เซสชันหน้าจอที่แนบกลับคืนสู่หน้าต่างเทอร์มินัล

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

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

 ทางออก 

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

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

การใช้หน้าจอที่มีชื่อ เซสชัน

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

 หน้าจอ -S bigfile 

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

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

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

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

 หน้าจอ -ls 

โฆษณา

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

 screen -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 ที่สำคัญที่คุณควรรู้

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ