Tek kullanıcı modundayken ikinci bir kabuğu nasıl başlatırım?


14

Bu terimler açısından bir çelişki gibi gelebilir, ancak son zamanlarda kırık bir RAID dizisini yeniden oluşturmaya çalışırken bir süre (günler!) Tek kullanıcı modunu (bakım modu olarak da) kullanmam gerekiyordu.

Bunu yaparken, çeşitli yapılandırma dosyalarındaki ayarları kontrol etme / düzenleme veya ana (ve yalnızca) konsol bazı kurtarma işlemini yürütürken bağlıyken sistem günlüklerine bakma gibi şeyler için ikinci bir kabuk kullanmak istedim.

Başka bir tty'de ikinci bir kabuk başlatmak için önerilen komut ne olurdu?

Açıkçası, bir yöntem screentty1'de kullanmak olabilir , ancak bunun sadece Alt-F1, Alt-F2, vb.Ile oturumları değiştirme kolaylığı yoktur.


4
screenbu kadar kolay. Ctrl AP, Alt F1'den daha zor görünmüyor ...
mveroone

TUI pencere yönetimi screenve benzeri uygulamalar tmuxher zaman işe yaramaz. Bazen ttyXa yerine gerçek bir cihaza ihtiyacınız olabilir pts.
Parthian Shot

Yanıtlar:


14

Özellikle bu durum için tasarlanmış bir komut var: openvt. Sadece openvttty1 üzerindeki kabuğunuzdan çalıştırın ve üzerinde zaten bir şey olmayan ilk tty üzerinde çalışan bir kabuk bulacaksınız (muhtemelen tty2.) Yararlı bulabileceğiniz birkaç seçenek vardır; openvt man sayfasına bakınız.

Bu getty tarafından yönetilen bir giriş olmadığından, yeni kabuktan çıktığınızda bir giriş isteminin geldiğini görmezsiniz. Üzerinde hiçbir işlem olmayacağından tty sadece ölecek, ancak yine de ileri geri geçiş yapabileceksiniz (Alt-F1 Alt-F2) ve kabuktan çıktığınızda ekranda ne olduğunu görebilirsiniz. deallocvtBu içindedir komut yok eder ttys zombi benzeri bir duruma, orijinaline dönen devlet "Alt-F2 şey yok".

Başlangıçta bu komutlar çağrıldı openve disallocsonunda birileri çok genel oldukları ve ayrılmaları nedeniyle onları değiştirmeye karar verdi, "tek kelime" olarak değerlendirildi.

Eski günlerde klavye sürücüsü ve init'in Alt + Up'ın çalışacağı şekilde yapılandırılması yaygındı open, bu nedenle yeni bir konsolda bir kabuk oluşturmak için bir kısayol tuşu görevi görüyordu. Yorumunuzda bulunan eski yapılandırmanın bir kalıntısını yine de bulabilirsiniz /etc/inittab. (Bir tane olmayan süslü yeni bir init kullanmıyorsanız inittab.)

Burada benzer bir soru var


3
Güzel, farkında değildim openvt. +1.
jscott

Aslında bu getty çok daha kolay görünüyor. Daha önce kurulmuş olduğunu asla fark etmedim.
StarNamer

Bir RAID dizisini onaran tek bir kullanıcı modunda bir sistemle bir haftadan fazla zaman geçirdiğimi ve openvtçok faydalı olduğunu rapor ettiğimi düşündüm . Bildirimime yeni bir komut getirdiğin için teşekkürler.
StarNamer

12

gettyİstediğiniz tty'ler için başka bir tane üretebilirsiniz . Tek kullanıcı moduna önyükleme yapın, ardından gettytty2 ile başlayın:

root@host:~# /sbin/getty 38400 tty2 &

Şimdi yeni tty'ye Alt+ geçebilirsiniz F2. Gerektiğinde ek tty'ler için tekrarlayın. Muhtemelen daha temiz bir şey yapabilir ve bunu /etc/inittabtek kullanıcı modunda otomatik olarak ele alacak şekilde yapılandırabilirsiniz .


Bu aradığım şey gibi görünüyor. Bir dahaki sefere denemek istiyorum.
StarNamer

Denedim. Çalışır, ancak giriş oturumu initdoğmadığı için ölürse yeniden doğmaz.
StarNamer

Aslında, yukarıdaki örnekteki arka plana bırakıyoruz. Gerçek vt tam sunan gerekiyorsa, hack çıkacaksanız /etc/inittabve /etc/rc1.d/S??singleen azından.
jscott

2

Muhtemelen JOB CONTROLmevcut kabuğunuzda kullanarak fazladan bir kabuk örneği olmadan yapabilirsiniz . Adresinin kılavuzunda belgelenmiştir bash(1).

Terminalinizde farklı bir şekilde yapılandırılabilmesine rağmen, varsayılan olarak Ctrl+ Zdizisini kullanarak bir görevi askıya alabilirsiniz , çıktılarını kontrol edin stty -a:

$ stty -a | grep susp
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;

İşlerinizi aşağıdakileri yaparak kontrol edebilirsiniz jobs:

# jobs
[1]   Stopped                 journalctl -f
[2]-  Stopped                 vim /etc/hosts
[3]+  Stopped                 tail -f /var/log/firewalld

Bunlardan birini ön plana getirin:

$ fg %3

Veya arka planda devam ettirin:

$ bg %2

Bu yöntemin birçok avantajı yoktur screenveya tmuxbazı durumlarda eşit derecede yararlı olabilir.


Mesele şu ki, ilk konsolda çalışan işlemi askıya almak veya müdahale etmek istemiyorum. Örneğin, çalışırken ddrescuebunu yapmak için ayarlanmış olsa bile kesmeye ve devam ettirmek istemiyorum ..
StarNamer

Bununla ilgili bir kaç sorun var. İlk olarak, onun kabuk olarak bash kullanarak olmayabilir (kullanıyor olabilir csh, tcshya da zshbu nedenle onun manpage söz bu durumda yanlış olacağını, örneğin,). Bir diğeri için bu, sorulan soruya cevap vermiyor.
Parthian Shot

1

Tmux veya ekran gibi terminal çoklayıcıları kullanmayı düşünün.

Tmux hakkında daha fazla bilgiyi burada bulabilirsiniz: https://github.com/tmux/tmux/wiki


Soru zaten bundan bahsediyor: "Açıkçası, bir yöntem tty1 * 'deki ekranı kullanmak olabilir , ancak bunun Alt-F1, Alt-F2, vb.
Cristian Ciupitu

Cristian'un dediği gibi, screendiğer çoklayıcıların daha da fazla abartılı olduğunu düşündüm ve hissettim. Tek ihtiyacım olan basit bir ikinci konsol.
StarNamer

Ah, üzgünüm, screensorunuza göz ardı ettim . Geç olmuştu.
Marcin Kaminski

Yeni TTY'lerin üretilmesinin yanı sıra onlara ayrı ayrı ve bu şekilde kenetlenmenin yanında, 2 anahtarın bir kombinasyonunu kullanmak nasıl "aşırı" olabilir?
mveroone

IMO, 'overkill'in garip bir tanımı ama hey, birisi için işe yarayan ne olursa olsun, bununla iyiyim;)
Marcin Kaminski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.