มี 7 อาคารที่สามารถใช้ในระบบของเรา tty7
อิงตาม GUI
ฉันจะรู้ได้อย่างไรว่าฉันใช้ tty ใดอยู่
ชอบ tty1, tty2 .... tty6?
มี 7 อาคารที่สามารถใช้ในระบบของเรา tty7
อิงตาม GUI
ฉันจะรู้ได้อย่างไรว่าฉันใช้ tty ใดอยู่
ชอบ tty1, tty2 .... tty6?
คำตอบ:
มีหลายวิธีในการค้นหาสิ่งนี้ ฉันจะไปกับคำสั่งwho am i
(ไม่who
):
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
เมื่อฉันอยู่ในเทอร์มินัลกราฟิกมันจะคืนค่าดังนี้
ravexina pts/0 2017-04-10 1:19 (:0)
ภายใต้เซสชัน ssh ที่ใช้ผลลัพธ์เทอร์มินัลกราฟิกเหมือนกัน แต่แทนที่จะเป็น (: 0) ฉันจะได้รับ IP ของเครื่อง (192.168.xx) คำสั่งอื่น ๆ ชอบw
, who
, pgrep
, ps
ฯลฯ ที่เป็นประโยชน์มากเกินไป
ตัวอย่างเช่นเพื่อค้นหาว่าtty
ส่วนต่อประสานกราฟิกของฉันทำงานอยู่:
ps $(pgrep Xorg)
ซึ่งในกรณีของฉันเพราะฉันไม่ได้ใช้เครื่องมือจัดการหน้าจอใด ๆ เช่น gdm หรือ slim มันจะผลิต:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
ผลตอบแทนอะไรและwhoami
ผลตอบแทนzanna
(ในขณะที่who
ผลตอบแทนการประชุมทั้งหมด (ผมจำได้ว่าคำถามที่เกี่ยวข้อง (ที่พิสูจน์แล้วว่าตอบไม่ได้) ที่เราสังเกตเห็นว่าการเลียนแบบที่แตกต่างกันการผลิตการส่งออกที่แตกต่างจากwho
))
who am i
จะทำงานได้ดีใน vt และpgrep
ฉลาดมาก (คุณอาจต้องการใช้$()
ไวยากรณ์สำหรับคำสั่งย่อย backticks สามารถสับสนเล็กน้อยใน markdown) ดังนั้นคำตอบของคุณดีมากและใครก็ตามที่ downvoted ไม่ควรทำเช่นนั้น ...
ใช้tty
คำสั่ง
ถ้าฉันพูดถูกนี่เป็นข้อมูลอ้างอิง:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
หมายความว่าคุณกำลังใช้เทอร์มินัลจาก GUI หรือผ่าน SSH
ลองย้อนกลับไปและเริ่มด้วยความสับสน: tty คืออะไร? แต่เดิม tty เป็นตัวย่อของโทรพิมพ์ซึ่งกลายเป็นโทรพิมพ์แก้วซึ่งกลายเป็นสถานีใด ๆ หรือการเชื่อมต่อกับหนึ่งโดยเฉพาะพอร์ตอนุกรม (เหล่านี้ยังคงอยู่รอบ ๆ ส่วนใหญ่ / dev / ttyS0, / dev / ttyUSB0 และบางครั้ง / dev / ttyacm0) จากนั้นคุณได้หลอก ttys และ ttys เสมือน มือยูนิกซ์เก่าคุ้นเคยกับ pseudo ttys สิ่งเหล่านี้ใช้สำหรับรีโมตเทอร์มินัล (ssh และ telnet), เทอร์มินัลเสมือน (xterm และอื่น ๆ ), และ multiplexers เทอร์มินัล (หน้าจอและ tmux) Pseudo ttys มีรูปแบบการตั้งชื่อที่หลากหลายในช่วงเวลาหนึ่ง แต่ปัจจุบันใช้ชื่อเช่น / dev / pts / 0 ttys เสมือนจริงในทางกลับกันจะเชื่อมโยงกับคอนโซลเสมือนโดยเฉพาะเมื่อคุณใช้ปุ่มฟังก์ชันควบคุม alt คุณกำลังสลับคอนโซลเสมือนซึ่งแต่ละคู่จะถูกจับคู่กับ tty เสมือน
ดังนั้นหากคุณต้องการที่จะหา TTY หลอกคุณ (หรือ TTY เสมือนเมื่อใช้โหมดข้อความ) มีทุกประเภทของการแก้ปัญหาเหมือนwho am i
หรือps ax|grep $$
นี้ค่อนข้างง่ายที่จะทำตามที่มีหลายวิธีที่จะหานี้เช่นหลอก TTY เปิดบน io มาตรฐาน ในกรณีส่วนใหญ่และมีวิธีการอื่น ๆ ที่ใช้งานได้แม้ในขณะที่เปลี่ยนเส้นทาง io สิ่งนี้ยังมีข้อดีของการทำสิ่งที่ถูกต้องเมื่อใช้พอร์ตอนุกรมและ ttys เสมือนตราบใดที่คุณไม่ได้ใช้ตัวจำลองเทอร์มินัลกราฟิกหรือเทอร์มินัลมัลติเพล็กเซอร์
แต่ถ้าคุณต้องการระบุคอนโซลเสมือนล่ะ sudo fgconsole
อาจมีประโยชน์สำหรับกรณีโต้ตอบ หรือสิ่งที่ฉันทำก็แค่เดินไปที่คอนโซลเนื่องจากการเปลี่ยนโดยทั่วไปนั้นเร็วพอ ฉันไม่ได้ตระหนักถึงวิธีการเขียนโปรแกรมที่ทำงานได้อย่างน่าเชื่อถือในกรณีที่ไม่มีปฏิกิริยาหรือไม่มาก่อน
ลองดูตัวอย่างที่รับประกันได้ว่าจะไม่สามารถตอบคอนโซลเสมือนได้อย่างน่าเชื่อถือ คอมพิวเตอร์ที่ฉันนั่งอยู่หน้า (อัลฟา) มี Xserver ที่ทำงานบน tty2 (: 1) ฉันมีสามหน้าต่างเปิดสอง xterms และ vncviewer (เชื่อมต่อกับ bravo: 2) xterm หนึ่งกำลังรันหน้าจอส่วนอีกอันกำลังเรียกใช้ ssh charley หน้าจอมีหน้าต่างสองบานเปิดอยู่, ssh delta และใคร (ที่ระบุ pseudo tty ในคอลัมน์สองอย่างถูกต้องและให้คำแนะนำ(:1:S0)
ในคอลัมน์ห้าที่บอกเราว่า pseudo tty เชื่อมต่อกับเซสชันหน้าจอแรกซึ่งเชื่อมต่อกับเซิร์ฟเวอร์ X ตัวที่สอง แต่ไม่ได้ให้ข้อมูลคอนโซลเสมือนใด ๆ ) การทำงานระหว่างเซสชัน ssh จะให้คำใบ้(alpha)
ซึ่งระบุเครื่องที่เซสชัน ssh มาจากซึ่งค่อนข้างดีสำหรับเซสชันระยะไกล แม้ว่าจะมีข้อมูลเล็กน้อยเกี่ยวกับสิ่งที่เชื่อมต่อกับหลอก tty (และไม่มีคอนโซลเสมือนหรือแม้กระทั่งข้อมูล tty ระยะไกลก็มีให้) อย่างน้อยโฮสต์ระยะไกลจะถูกระบุ ข้อมูลเกี่ยวกับหน้าจออาจผิดเนื่องจากหน้าจอเซสชันสามารถถอดออกได้และ vnc ไม่ให้ข้อมูลที่เป็นประโยชน์เลยเนื่องจากความแตกต่างเพียงอย่างเดียวระหว่างเซสชัน vnc และเซสชันโลคัลคือหมายเลขที่แสดง ในหลายกรณีคุณสามารถสันนิษฐานได้ว่า: 0 อยู่ใน tty7 แต่ไม่เสมอไปและไม่เคยอยู่ในเหมืองเนื่องจาก bravo ไม่มีการ์ดกราฟิกเลยและ: 0 เป็นเซสชัน vnc (ซึ่งทำให้สับสนเพราะคิดว่าเป็นคอนโซลท้องถิ่น) และไม่มีเครื่องใดที่ใช้ tty7 เป็นเซสชั่นกราฟิกเพราะฉัน (ไม่เพียง แต่จะตรงกันข้าม) บันทึกการถ่ายโอนข้อมูลไปยัง tty7 (และ tty5) tty6 และ tty8 เช่นกัน) สร้างเซสชั่นกราฟิกที่อื่น แต่หน้าจอรอยังสามารถทำหน้าที่เป็นโปรแกรมเทอร์มินัลเพื่อให้คุณสร้างเซสชันผ่านสายเคเบิลอนุกรม เซสชั่นดังกล่าวรายงานอะไรเมื่อผู้ที่ทำงาน? ทำไมไม่มี แต่พอร์ตอนุกรมไม่ว่าจะเป็นผ่าน vnc, xterm, ssh, หน้าจอและอะแดปเตอร์ usb อนุกรมทั้งหมดในครั้งเดียวหรือเชื่อมต่อกับโทรทัศน์ของฉัน
เมื่อคุณเข้าสู่ระบบ tty จะแสดงว่าคุณใช้ tty ในบรรทัดแรกโดยอัตโนมัติ
หากการกดแป้นพิมพ์ร่วมกันCtrl+ Alt+ F3แสดงเฉพาะหน้าจอสีดำตามที่คุณเขียนไว้ในความคิดเห็นมีทางเลือกอื่นในการเข้าถึงรูทเชลล์เมื่อบู๊ตเครื่องคอมพิวเตอร์โดยไม่ต้องกดCtrl+ Alt+ F3เพื่อเพิ่ม tty
ทันทีหลังจากหน้าจอสแปลช BIOS / UEFI ในระหว่างการบู๊ตด้วย BIOS ให้กดปุ่มค้างไว้อย่างรวดเร็วShiftซึ่งจะทำให้เมนู GNU GRUB ปรากฏขึ้น (ถ้าคุณเห็นโลโก้อูบุนตูคุณพลาดจุดที่คุณสามารถเข้าสู่เมนูด้วง) ด้วยการกด UEFI (อาจจะหลายครั้ง) Escปุ่มเพื่อเข้าสู่เมนูด้วง บางครั้งหน้าจอสแปลชของผู้ผลิตเป็นส่วนหนึ่งของ bootloader ของ Windows ดังนั้นเมื่อคุณเปิดเครื่องมันจะตรงไปที่หน้าจอ GRUB จากนั้นกดShiftไม่จำเป็น
จากหน้าจอ GNU ด้วงแรกสีม่วงเลือกตัวเลือกขั้นสูงสำหรับอูบุนตูEnterด้วยปุ่ม↑และ↓และกด จากนั้นคุณจะได้รับแจ้งจากเมนูเมนู GNU GRUB สีม่วงอื่นที่มีรายการตัวเลือกเคอร์เนลอยู่
กดปุ่มลูกศรชี้จนกว่าคุณจะเลือกรายการที่สองจากด้านบน (หนึ่งกับที่โหมดการกู้คืนในคำอธิบาย) Enterและกด
ตอนนี้คุณควรเห็นเมนูการกู้คืนนี้:
ใช้ปุ่มลูกศรเลื่อนลงไปที่รากEnterและกด
ตอนนี้คุณควรเห็นรูทพรอมต์ดังนี้:
root@ubuntu:~#
ในขั้นตอนนี้คุณควรมีระบบไฟล์แบบอ่านอย่างเดียว คุณต้องติดตั้งใหม่พร้อมสิทธิ์การเขียน:
mount -o rw,remount /
ตอนนี้คุณสามารถรันคำสั่งเหมือนกับในเทอร์มินัล
ฉันเดาว่าคุณกำลังดูแลสิ่งอื่นนอกเหนือจากคำตอบอื่น ๆ เรียกใช้sudo fgconsole
เพื่อค้นหาว่า tty จริงใดที่ทำงานอยู่ในขณะนี้
ใช้คำสั่ง tty มันทำงานบน Linux และ macOS และให้เอาต์พุตที่ค่อนข้างง่ายต่อการอ่านเฉพาะชื่อ tty ที่คุณอยู่
ตัวอย่าง:
$ tty
/dev/pts/0
มันง่ายที่จะเขียนสคริปต์นี้หรือรวมไว้ในพรอมต์ตัวอย่าง:
$ PS1='`tty`: '
/dev/pts/0: _
วิธีนี้คุณจะรู้ได้เสมอว่าเทอร์มินัลใดอยู่
ยกเว้น GUI ซึ่งในกรณีที่คุณได้รับ pts สิ่งนี้จะแสดงผลลัพธ์ที่คุณต้องการ:
ls -l `tty` | awk '{print $10}'