Bagaimana cara memeriksa tty mana yang saya gunakan saat ini?

22

Ada 7 terminal yang dapat digunakan dalam sistem kami. tty7berbasis GUI.

Bagaimana saya bisa tahu tty mana yang saya gunakan saat ini?

seperti, tty1, tty2 .... tty6?

luv.preet
sumber
Mengapa Anda mengklaim itu adalah "Poin" dalam komentar? Itu sama sekali berbeda dari yang Anda tanyakan di sini. Sesi dalam GUI BUKAN tty.
Rinzwind
1
Saya bingung tentang konsep ini, itu sebabnya
luv.preet
terkait: unix.stackexchange.com/questions/77796/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

30

Ada beberapa cara untuk mengetahuinya. Saya akan pergi dengan perintah who am i(bukan who):

$ who am i
ravexina    tty2        2017-04-10 11:19 (:0)

Ketika saya berada di terminal grafis, itu akan mengembalikan sesuatu seperti:

ravexina    pts/0        2017-04-10 1:19 (:0)

Di bawah sesi ssh menggunakan hasil terminal grafis adalah sama, tetapi bukannya (: 0), saya akan mendapatkan IP mesin saya (192.168.xx). perintah lain seperti w, who, pgrep, ps, dll membantu juga.

Misalnya untuk mencari tahu di mana ttyantarmuka grafis saya berjalan:

ps $(pgrep Xorg)

Yang mana dalam kasus saya, karena saya tidak menggunakan manajer tampilan seperti gdm atau slim yang akan dihasilkannya:

 PID  TTY      STAT   TIME COMMAND
 1693 tty1     Sl     0:05 /usr/lib/xorg/Xorg
Ravexina
sumber
4
+1, meskipun di mate-terminal who am i tidak menghasilkan apa-apa, dan whoamimengembalikan zanna, (sambil whomengembalikan semua sesi (saya ingat pertanyaan terkait (yang terbukti tidak dapat dijawab) di mana kami perhatikan bahwa emulator yang berbeda menghasilkan keluaran yang berbeda dari who)).
Zanna
grafis akan selalu menggunakan tty7, karena itu adalah satu-satunya 1 yang menyediakan dukungan grafis
luv.preet
1
@Zanna saya temui situasi ini sendiri, tapi saya pikir layak untuk disebutkan.
Ravexina
1
Lagi pula, who am iakan selalu berfungsi dengan baik dalam vt, dan pgrepsangat cerdas (Anda mungkin ingin menggunakannya$() sintaks untuk perintah sub - backticks bisa sedikit membingungkan dalam penurunan harga) sehingga jawaban Anda sangat bagus dan siapa pun yang downvoted seharusnya tidak melakukannya ...
Zanna
1
@ luv.preet yang berada di luar cakupan pertanyaan Anda tetapi lihat Perbedaan antara Poin dan tty :) - posting yang mana ini adalah duplikat memiliki jawaban yang luar biasa
Zanna
14

Gunakan ttyperintah.

Jika saya benar ini adalah rujukan:

/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
lithium_js
sumber
itu menunjukkan Poin / 18.
luv.preet
Poin ini mungkin berjalan dalam jumlah besar, bukan? Bagaimana saya bisa tahu itu?
luv.preet
5
@ luv.preet bahwa adalah Anda terminal. Lihat "Perbedaan antara pts dan tty" .
Chai T. Rex
4
ptsberarti Anda menggunakan terminal dari GUI atau melalui SSH
lithium_js
3
Anda harus mengajukan pertanyaan baru untuk itu.
Chai T. Rex
6

Mari kita mundur selangkah dan mulai dengan kebingungan: apa itu tty? Awalnya tty adalah singkatan dari teletype yang menjadi teletype kaca yang menjadi terminal atau koneksi ke satu, khususnya port serial (Ini masih ada, paling umum / dev / ttyS0, / dev / ttyUSB0 dan kadang-kadang / dev / ttyacm0). Kemudian Anda mendapatkan tysys semu dan tysys virtual. tangan unix lama sudah familiar dengan pseudo ttys ini digunakan untuk terminal jarak jauh (ssh dan telnet), terminal virtual (xterm dan sejenisnya), dan terminal multiplexer (layar dan tmux). Pseudo ttys telah memiliki berbagai skema penamaan dari waktu ke waktu tetapi yang saat ini menggunakan nama seperti / dev / pts / 0. Virtual ttys di sisi lain terkait dengan konsol virtual, khususnya ketika Anda menggunakan tombol fungsi alt kontrol, Anda mengganti konsol virtual yang masing-masing dipasangkan dengan virtual tty.

Jadi jika Anda perlu menemukan pseudo tty Anda (atau virtual tty saat menggunakan mode teks) ada berbagai macam solusi seperti who am iataups ax|grep $$ ini relatif mudah dilakukan karena ada beberapa cara untuk mengetahuinya karena pseudo tty dibuka pada standar io dalam banyak kasus dan ada metode lain yang bekerja bahkan ketika io dialihkan. ini juga memiliki keuntungan juga melakukan hal yang benar ketika menggunakan port serial dan ttys virtual selama Anda tidak menggunakan emulator terminal grafis atau terminal multiplexer.

Tetapi bagaimana jika Anda ingin mengidentifikasi konsol virtual? sudo fgconsolesemoga bermanfaat untuk kasus interaktif. Atau yang saya lakukan hanyalah menjalankan konsol karena pergantian biasanya cukup cepat. Saya tidak mengetahui metode terprogram yang bekerja andal dalam kasus-kasus noninteraktif atau non-latar depan.

Mari kita lihat contoh yang dijamin tidak dapat menjawab konsol virtual dengan andal. Komputer saya duduk di depan (alpha) memiliki Xserver berjalan pada tty2 (: 1), saya memiliki tiga jendela membuka dua xterms dan vncviewer (terhubung ke bravo: 2). Satu xterm menjalankan layar, lainnya menjalankan ssh charley. Layar memiliki dua jendela terbuka, ssh delta dan siapa (yang dengan benar mengidentifikasi pseudo tty di kolom dua dan memberikan petunjuk (:1:S0)di kolom lima yang memberitahu kita bahwa pseudo tty terhubung ke sesi layar pertama yang terhubung ke server X kedua, tetapi tidak memberikan informasi konsol virtual). Menjalankan siapa yang melakukan sesi ssh memberi petunjuk(alpha)yang mengidentifikasi mesin dari mana sesi ssh berasal yang relatif baik untuk sesi jarak jauh. Meskipun ada sedikit informasi tentang apa yang terhubung ke pseudo tty (dan sama sekali tidak ada konsol virtual atau bahkan informasi tty jarak jauh), setidaknya host jarak jauh diidentifikasi. informasi tentang layar bisa salah karena sesi layar dapat dilepas, dan vnc tidak memberikan informasi yang berguna sama sekali karena satu-satunya perbedaan antara sesi vnc dan sesi lokal adalah nomor tampilan. Dalam banyak kasus, Anda dapat berasumsi bahwa: 0 ada di tty7 tetapi tidak selalu, dan tidak pernah ada pada saya karena bravo tidak memiliki kartu grafis sama sekali dan: 0 adalah sesi vnc (yang membingungkan siapa karena menganggapnya sebagai konsol lokal) dan tidak ada mesin yang menggunakan tty7 sebagai sesi grafis, karena saya (bukan hanya sebaliknya) membuang log ke tty7 (dan tty5, tty6, dan tty8 juga) mengubah sesi grafis di tempat lain. Tetapi layar tunggu juga dapat bertindak sebagai program terminal yang memungkinkan Anda untuk membuat sesi melalui kabel serial. Apa yang dilaporkan sesi seperti itu ketika siapa yang dijalankan? Kenapa tidak ada tetapi port serial apakah itu melalui vnc, xterm, ssh, layar dan adaptor serial usb sekaligus atau terhubung ke televideo saya.

Hildred
sumber
6

Ketika Anda telah login ke tty itu menunjukkan tty mana yang Anda gunakan pada baris pertama secara otomatis.


Jika menekan kombinasi keyboard Ctrl+ Alt+ F3hanya menunjukkan layar hitam, seperti yang Anda tulis dalam komentar, ada cara alternatif untuk mendapatkan akses ke shell root saat mem-boot komputer tanpa menekan Ctrl+ Alt+ F3untuk menampilkan tty.

  1. Segera setelah layar splash BIOS / UEFI selama boot, dengan BIOS, tekan dan tahan Shifttombol dengan cepat, yang akan memunculkan menu GNU GRUB. (Jika Anda melihat logo Ubuntu, Anda melewatkan titik di mana Anda dapat masuk ke menu GRUB.) Dengan UEFI tekan (mungkin beberapa kali) Esckunci untuk menuju ke menu GRUB. Kadang-kadang layar splash pabrikan adalah bagian dari bootloader Windows, jadi ketika Anda menghidupkan mesin, langsung ke layar GRUB, dan kemudian menekan Shifttidak perlu.

  2. Dari layar GNU GRUB ungu pertama pilih Opsi lanjutan untuk Ubuntu dengan tombol ↑ dan ↓ dan tekan Enter. Anda kemudian akan diminta oleh menu menu GNU GRUB ungu lain yang memiliki daftar opsi kernel di dalamnya.

  3. Tekan tombol panah bawah hingga Anda memilih entri kedua dari atas (entri dengan mode pemulihan dalam uraian) lalu tekanEnter .

    Sekarang Anda akan melihat menu pemulihan ini:

    menu pemulihan

  4. Menggunakan tombol panah, gulir ke bawah untuk membasmi lalu tekanEnter .

    Anda sekarang akan melihat prompt root, sesuatu seperti ini:

    root@ubuntu:~#
    
  5. Pada tahap ini Anda harus memiliki sistem file read-only. Anda harus mengirim ulang dengan izin menulis:

    mount -o rw,remount /  
    

    Sekarang Anda dapat menjalankan perintah yang sama seperti di terminal.

karel
sumber
apakah ini selalu membuka tty1?
luv.preet
Tidak, itu tidak membuka tty. Alih-alih menginstal sistem file root dari Ubuntu yang Anda instal pada hard drive Anda sebagai shell interaktif dengan izin menulis, memungkinkan Anda untuk menjalankan perintah di atasnya.
karel
3

Saya kira Anda sedang mencari sesuatu yang lain daripada jawaban lain yang diberikan. Jalankan sudo fgconsole untuk mengetahui tty mana yang sekarang aktif.

marian adam
sumber
@karel Sangat mudah untuk membayangkan situasi di mana Anda melewatkan pengumuman TTY saat ini. Misalnya profil bash Anda membersihkan layar. Saya menawarkan perintah yang dapat digunakan kapan saja, tidak hanya segera setelah masuk. WRT Ctrl + Alt + F1 tidak berfungsi - ada solusi cepat: gunakan chvt atau openvt.
marian adam
Dan BTW, jalankan dengan sudo. Itu sebabnya Anda mendapat kesalahan.
marian adam
1

Gunakan perintah tty, ini bekerja di Linux dan macOS dan memberikan output yang cukup sederhana untuk dibaca, hanya nama tempat Anda berada.

Contoh:

$ tty
/dev/pts/0

Mudah untuk membuat skrip ini atau memasukkannya dalam prompt, contoh:

$ PS1='`tty`: '
/dev/pts/0: _

Dengan cara ini Anda akan selalu tahu di terminal mana Anda berada.

André
sumber
1

Kecuali untuk GUI, dalam hal ini Anda mendapatkan poin, ini menunjukkan output yang Anda inginkan:

ls -l `tty` | awk '{print $10}'
Ferroao
sumber