วิธีใช้คำสั่งหน้าจอของ 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 ที่สำคัญที่คุณควรรู้