Bir Linux sisteminde /dev/console
, /dev/tty
ve arasındaki fark /dev/tty0
nedir?
Kullanımları nedir ve nasıl karşılaştırılır?
Bir Linux sisteminde /dev/console
, /dev/tty
ve arasındaki fark /dev/tty0
nedir?
Kullanımları nedir ve nasıl karşılaştırılır?
Yanıtlar:
Gönderen belgeler :
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
Eski güzel günlerde /dev/console
Sistem Yöneticisi konsolu vardı. Ve TTY'ler, kullanıcıların bir sunucuya bağlı seri cihazlarıydı. Şimdi /dev/console
ve /dev/tty0
geçerli ekranı temsil eder ve genellikle aynıdır. Sen ekleyerek örneğin kılabilirsiniz console=ttyS0
için grub.conf
. Bundan sonra /dev/tty0
bir monitör ve /dev/console
öyle /dev/ttyS0
.
Egzersiz arasındaki farkı göstermek için /dev/tty
ve /dev/tty0
:
Ctrl+ Alt+ Tuşlarına basarak 2. konsola geçin F2. Olarak giriş yapın root
. Yazın sleep 5; echo tty0 > /dev/tty0
. Basın Enterve Alt+ 'ya basarak 3. konsola geçin F3. Şimdi Alt+ 'ya basarak 2. konsola geri dönün F2. Yazın sleep 5; echo tty > /dev/tty
, basın Enterve 3. konsola geçin.
Bunun tty
sürecin başladığı ve tty0
her zaman güncel bir konsol olduğunu görebilirsiniz.
$ sudo sh -c "sleep5; echo tty0 > /dev/tty0"
sudo -i
ve voila - bir kök kabuğu.
sudo anycommand
çalışırsa, o sudo -i
zaman kök gitmek için de çalışır. Kök alamayacağınız bir Linux / BSD / Unix diye bir şey yoktur. (O zaman artık Linux / BSD / Unix
/dev/console
önyükleme sırasında parametre olarak ayarlanabilen sanal bir cihaz kümesidir. Seri bir aygıta veya sanal bir konsola yönlendirilebilir ve varsayılan olarak işaret eder /dev/tty0
. console=
Çekirdeğe birden çok seçenek iletildiğinde, konsol çıktısı birden fazla cihaza gidecektir.
/dev/tty0
mevcut sanal konsol
/dev/tty[1-x]
control- alt- F1vb. ile değiştirdiğiniz sanal konsollardan biridir .
/dev/tty
konsola açılan bir takma addır (varsa fiziksel, sanal veya sözde aygıt). Diğer cihazların aksine, yazmak için kök ayrıcalıklarına ihtiyacınız yoktur. Ayrıca, bunlar tarafından başlatılanlar cron
ve benzer toplu işlemler gibi işlemlerin, /dev/tty
hiçbiriyle ilişkili olmadıklarından, kullanılamaz olduğuna dikkat edin. Bu prosesler, bir olması ?
içinde TTY
sütun ps -ef
çıkışı.
/dev/tty
, açmakta olan sürece bağlı olarak farklı bir cihaz olabilir. Cevap güncellendi.
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
Linux'ta, çekirdek konsolu console=
önyükleme seçeneği kullanılarak yapılandırılabilir . Çağıran çekirdek kodu printk()
, örneğin bir cihaz yüklendiğinde veya bir hata oluştuğunda mesaj yazabilir. Bu mesajlar ayrıca çekirdek tarafından tamponlanır. (Ayrıca bakınız dmesg
). Bir konsol cihazı bulunduğunda ve başlatıldığında, önceden arabelleğe alınmış tüm mesajları alır.
console=
Birden fazla konsol yapılandırmak için birden fazla kez geçirebilirsiniz ; mesajlar hepsine yazılır. Görünüşe göre sadece her "tip" bir konsol seçebilirsiniz: Her iki kullanamazsınız console=ttyS0
ve console=ttyS1
.
Çekirdek dokümantasyonu /dev/console
, numaralandırılmış bir karakter cihazı olarak belirlenir (5,1)
. Bu karakter aygıtını açmak, konsollar listesindeki son tty olan "ana" konsolu açar. init
"PID 1" adı verilen veya çekirdek olmayan ilk işlem, /dev/console
standart çıktıya, standart hataya ve standart girdiye bağlı olarak başlatılır .
Konsollardan hiçbiri bir tty değilse, açılış /dev/console
, hatayı döndürür ENODEV
("Böyle bir cihaz yok"). Çekirdek olacakbaskıBir mesajı init
kaydet ve ne olursa olsun başla . Tty aygıtı olmayan bir çekirdek konsolu örneği için , satır yazıcısına bakın netconsole
veya en sevdiğim konsolum .
Ayrıca okuyarak, konsolların bir listesini görebilirsiniz /sys/class/tty/console/active
. systemd belgeleri , gösterilen ilk cihazın ana konsol olduğunu belirtir . Liste aslında çekirdek komut satırının tersi sıradadır. Mevcut çekirdek belgeleri yanlış gösterilen son aygıt, ana ya da "aktif" konsol olduğunu belirtmektedir. Bazı nedenlerden dolayı bu dosyayı değişiklikler için sorgulamak mümkündür (konsol cihazlarının çıkarılması durumunda?).
Bir systemd-nspawn
kap içinde, standart /dev/console
dosya sahte terminal cihazı (PTY) ile değiştirilir. Bunlar en iyi sanal terminal cihazları olarak tanımlanır. Dinamik olarak oluşturulurlar ve ayrıca GNOME Terminali gibi grafiksel terminal emülatörleri ve uzaktan erişim için kullanılırlar ssh
.
Linux TTY aygıt, düğümlerin tty1
içinden tty63
sanal terminalleridir. Aynı zamanda VT'ler veya sanal konsollar olarak da adlandırılır. Fiziksel konsol aygıt sürücüsünün üstündeki çoklu konsolları simüle ederler. Bir seferde yalnızca bir sanal konsol gösterilir ve kontrol edilir. Aktif terminal, chvt
sahip olduğunuz birçok fonksiyon tuşuyla örneğin Ctrl + Alt + F1 kullanılarak veya değiştirilebilir .
Ayrıca kullanarak mevcut VT'yi okuyabilir ve yazabilirsiniz /dev/tty0
. tty0
normal çekirdek konsolu, örneğin açık bir şekilde seçmediyseniz. "Sistem ilk önce bir VGA kartı arar (bu VT'lerin çalıştırıldığı şeydir) ve sonra bir seri bağlantı noktasıdır". Konsolu ayrıca belirli bir VT'ye, örneğin console=tty1
.
"Sisteminizde bir VGA kartınız yoksa, ilk seri port otomatik olarak konsol haline gelecektir." Bir "seri konsol" gibi ttyS0
muhtemelen en yaygın alternatiftir tty0
. VT sistemini bir seri konsolun üstünde kullanmak mümkün değildir.
/dev/tty
POSIX tarafından belirlenen üç standart cihaz dosyaları biridir ( /dev/
POSIX tarafından belirlenen üç dizin adlarından biridir). Açmak, mevcut işlemin kontrol terminalini açmakla eşdeğerdir. Kontrol terminali, bir işlem ilk önce bir terminali açtığında, en azından Linux'ta ayarlanır . Örneğin, içinde init
, buna atıfta bulunacaktı /dev/console
.
Kontrol terminalinden ayrılmak, örneğin bir sistem günlüğü arka plan programı gibi bir arka plan işlemine başlamak için geleneksel olarak gerekli adımlardan biridir . Bir arka plan işlemi olma adımları çok karmaşıktır, ancak spesifik olmak gerekirse, kontrol terminalinden ayrılan adım, setid sistemi çağrısıdır. Daha modern sistemlerde, init sistemi, örneğin systemd, ilk etapta herhangi bir kontrol terminali olmadan servisi başlatır.