วิธีใช้คำสั่งหน้าจอของ Linux
เผยแพร่แล้ว: 2022-01-29 ด้วยคำสั่ง 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 ที่สำคัญที่คุณควรรู้
คำสั่งลินุกซ์ | ||
ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · เข้าร่วม · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · ดู · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · เมานต์ · umount · ติดตั้ง · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพทช์ · แปลง · rclone · ฉีก · srm | |
กระบวนการ | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · หลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · poweroff · passwd · lscpu · crontab · วันที่ · bg · fg | |
ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ