Systemd ile nasıl daha az tty elde edilir?


29

Eski günlerde yeni değiştirdim /etc/inittab. Şimdi, systemd ile tty [1-6] 'ı otomatik olarak başlatıyor gibi görünüyor, tty [4-6]' yı nasıl devre dışı bırakmalıyım?

Sadece bir sistemd servis dosyası varmış gibi görünüyor ve %Ifarklı tty oturumlarını ayırt etmek için a kullanıyor . Umarım bu hizmeti kaldırmam ve her birini getty@ttyX.serviceel ile oluşturmam gerekmez .

Yanıtlar:


35

systemdTalep üzerine gettolar altında üretildiği için "ekstra" TTY'leri devre dışı bırakmaya gerek yoktur : man systemd-getty-generatorayrıntılar için bakınız. Varsayılan olarak, bu otomatik yumurtlamanın yalnızca VT6'ya kadar olan VT'ler için yapıldığını unutmayın (geleneksel Linux sistemlerini taklit etmek için).

Lennart'ın bir blog yazısı 1'de dediği gibi :

İşleri daha verimli hale getirmek için giriş talepleri şimdi yalnızca talep üzerine başlatılıyor. VT'lere geçtiğinizde, getty hizmeti getty@tty2.service, getty@tty5.service ve benzeri durumlarda başlatılır. Artık getty işlemlerini kayıtsız şartsız başlatmak zorunda olmadığımız için bu, biraz kaynak tasarrufu yapmamızı sağlar ve başlangıç ​​işlemini biraz daha hızlandırır.

Belirli bir sayıda getty yapılandırmak istiyorsanız, logind.confbu örnekte 3 uygun girişle değiştirebilirsiniz :

NAutoVTs=3


1. Aslında, şu anda Yöneticiler için şu anda 18 numara olan tüm görev dizileri okunmaya değer.


Cevap için teşekkürler, Jason. Şirketimin başvurusu fiziksel bir sunucuda ve eski dağıtımlarda, diğer tty'leri kilitlemek için inittab'ı değiştiririz.
jcbwlkr

11

Debian tabanlı sistemlerde, yeni bir sunucu oluşturduysanız (dbus servisi olmadan) başlatma sırasında 5 fazla getty'nin başlatılmasını sağlayan bir dosya var:

/lib/systemd/system/getty.target.wants/getty-static.service

İçinde diyor ki:

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
RemainAfterExit=true

Sadece bu dosyayı silmek, ekstra getty'nin yumurtlamasını engeller. Sadece bir ekstra getty (2 sanal konsol için) üretmek istiyorsanız listeyi kısaltmaktan çekinmeyin. Tty1'e otomatik olarak bir tane aldığınızı ve her zaman en az bir sanal konsolunuzun bulunduğunu unutmayın.

Ayrıca bakınız: dbus eksikse systemd-logind.service başlatılamıyor


2
Not: dosya, sistem paketine aittir, dolayısıyla onu değiştirmek veya silmek için dpkg-divertönce kullanın . Ancak, yoldan çekilmenin yerel bir yolu da var - koşun sudo systemctl mask getty-static.serviceve kendi yerinizi kurun/etc
Josip Rodin

2
maskEtkin bir hizmetin gürültülü olması durumunda, /etciçeriğini geçersiz kılmak için aynı ada sahip bir ünite oluşturmak daha temiz olacaktır . Sıfır statik getty's başlatmak istiyorsanız, ExecStart = / bin / true kullanın.
kaynakjedi

Diğer systemd doğru yolu (eğer gerçekten bu dosyayı silmek ASLA) kullanarak paketi sürümü geçersiz kılmak için sudo systemctl edit getty-static.serviceönceliklidir override dosyası yaratacak olan /libtek
ryeager

8

Büyük olasılıkla 1-3 ve 7-9 çalışmayı bırakırken belirli 4-6 TTY'lerindeki getty'leri devre dışı bırakmak için:

for i in {4..6}; do
  systemctl mask getty@tty${i}.service
done

mask/etc/systemd/system/{name} -> /dev/nullHizmeti etkin bir şekilde devre dışı bırakan sembolik bağlantı oluşturur . Üzerinden çalıştırma girişimi systemctl starthata görüntülerFailed to start NAME.service: Unit NAME.service is masked.

Eğer bir servisiniz varsa Wants=masked.service, o start Azaman başarılı olacak ama aynı zamanda dergide bağımlılık başlangıç ​​hatası üretecektir.

B.service varsa Requires=masked.service, o start Bzaman da başarısız olur.

Evet, necroanswer. Şerefe.

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.