Systemd hala çalışma seviyelerini biliyor mu?


17

Systemd hala çalışma seviyesi kavramına sahip mi? Örneğin kullanmak anlamsız telinit <number>mı?



aşağıdaki cevapları bilmiyorum, ama RHEL / Centos 7.6 init 1veya init 3veya init 5veya init 6veya init 0veya runlevelhala her zamanki gibi davranıyorlar, ve tüm umurumda. Çok daha kolay sözdizimisystemctl blabla blabla.blabla
ron

Yanıtlar:


14

SystemD Çalışma Seviyesi Düşük Aşağı

SystemD (aemon) içinde, çalışma seviyeleri "Hedefler" olarak gösterilir. Kavram hala orada, ancak gereksiniminiz için istenen sonucu üretmek için iş akışı farklı.

İlişikte bu konuya açıklık getirilmelidir.

Mevcut çalışma seviyesini nasıl değiştirebilirim?

$ systemctl isolate runlevelX.target

Sonraki önyükleme için varsayılan çalışma düzeyini nasıl değiştirebilirim?

# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
  • ln -sf TARGET DESTINATION
  • -s sembolik bağlantı oluşturur
  • -f varolan hedef dosyasını kaldırır

VEYA (@centimane'nin önerdiği gibi) basitçe "kutsanmış" systemdkomutunu kullanın:

systemctl set-default [target name].target

Mevcut çalışma seviyesini nasıl belirlerim?

$ systemctl list-units --type=target

Yine de çalışma düzeyleri arasında geçiş yapmak için init komutunu kullanabilir miyim?
drpaneas

2
Systemd paketiniz SysV uyumlu destek ile oluşturulmuşsa, sistemd ikili dosyasına bir telinit symlink'i içerecektir; .
Wieland

2
Varsayılan hedefi değiştirmek systemctl set-default [target name].targetiçin bağlantıyı manuel olarak oluşturmak yerine kullanmanız gerekir .
Centimane

13

Hayır. Sistem kullanıcıları iki kez yazdıkça, bir kez telinitkılavuzunda ve bir kez de runlevelkılavuzlarında, çalışma seviyeleri "kullanılmıyor". Çalışma seviyelerini unutabilirsiniz.

Bu şeyler aslında birkaç uyumluluk şiddeti ile birlikte sistemde mevcut değildir.

  • Hedef adları için bazı sembolik bağlantılar vardır, ancak bu hedefler hiçbir zaman sistemd tarafından uygun şekilde kullanılmaz.
    • Bunun yerine, önyükleme işlemi kullanmaktadır default.target(ve böylece bir veya daha iki graphical.targetve multi-user.target), bir rescue.targetya da bir emergency.target. Ve kapatma işlemi a shutdown.target, a reboot.target, a halt.targetveya a'yı içerir poweroff.target. Önyükleme veya kapatmaya herhangi bir çalışma düzeyi hedefi dahil değildir .
    • telinitBiri kullanır uyumluluk sembolik bağlantılar onun komut satırı argümanları haritaya düşünebilir komut, ya bunu yapmaz. Orada kaynak kodunda bir kablolu masam telinitprogramı ve sayılar 2, 3, 4, ve 5komuta argümanlar eşlemek için kablolu olarak multi-user.targetve graphical.target.
    • systemd-update-utmp ayrıca dahili bir kablolu tablo vardır.
  • Çalışma seviyesi şeyler "init tablosu" yoktur. systemd sadece van Smoorenburg ile uyumludur, van Smoorenburg ile uyumlu rcdeğildir init.
  • Systemd'in kendisi tarafından tutulan "mevcut çalışma seviyesi" değeri yoktur. Aksine, neredeyse tamamen belgesiz systemd-update-utmpkomutu devletler aktivasyon açısından içsel faaliyet rescue.target, multi-user.targetve graphical.target.
  • systemd-sysv-generator, systemd'nin geriye dönük uyumluluk hizmet birimi üreticisi, /etc/rc[234].ddizinleri oluşturulan hizmet birimlerindeki tek bir Wanted-Byilişkiyle birleştirir multi-user.target. Oluşturulan hizmet birimlerinde çalışma seviyeleri için gerçek bir referans yoktur. (Eskiden yıllar önce vardı, ama sistemd insanlar bunun yanlış gittiğini fark ettiler, çünkü başka bir yere atıfta bulunulmadılar.)

Birisi, "init 0 " sorgusu için Arch Linux gibi Arch Linux gibi bir sistem kullanıcısıysa , Arch yüklemesinde neden "Aşırı Bağımsız Değişkenler" ile sonuçlanır? " init 0sonuç olarak , komutun yanlış çağrıldığından şikayet edecek olan "yerel" sistemd davranışı ortaya çıkar.

daha fazla okuma


4

Çok teşekkürler. Yani, eğer doğru anladıysam:

Örneğin:

ls -ll /usr/lib/systemd/system/runlevel*.target

Çıktı:

/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target

Gördüğünüz gibi, çalışma seviyeleri kavramı var, ancak runlevel.target dosyalarının aslında “gerçek” dosyalar değil, yeni, modern, daha iyi adlandırılmış dosyalar düzenine yumuşak bağlantılar olması nedeniyle oldukça eski. systemd onlara “hedef” demeyi sever.

Yani, eğer böyle yapmak telinit 5istiyorsanız şu şekilde olur: systemctl isolate runlevel5.target hangi ile aynı: systemctl isolate graphical.target(bence tavsiye edilir).

Olası tüm hedefleri bilmek istiyorsanız:

ls /usr/lib/systemd/system/*.target

Evet, bunu doğru anladığınıza inanıyorum. Ben prosedürel, adım-adım-adım, INIT.D sistemi olarak aşina olduğum şey olarak, SystemD geç benimseyen olacağım ... SystemD araştırıyor olduğunu alkışlamak. SystemD'in en iyi kısmı, daha hızlı önyükleme sağlayan paralel çoklu iş parçacıklı işlemidir. Multi-Threading önyükleme INIT.D ile yapılabilir, ancak güçlü BASH komut dosyası gerektirir.
Tyler Maginnis

BTW, ls -lleşdeğerdir ls -l. Kullanma alışkanlığına girmek isteyebilirsiniz ls -ld.
G-Man,

telinit 0/ telinit 6hala çalışıyor. Bu, göç konusunda yardımcı olduğundan ve dağıtımların çoğunun hala desteği bırakmak için bir neden görmediğini düşünüyorum. isolateaçıkça, çalışma seviyelerinin nasıl çalıştığını taklit etmek istiyordu, ancak çeşitli kötü uç durumlar var. Tüm talimatları göz ardı etmenizi isolate runlevel5.targetveya hatta görmezden gelmenizi şiddetle tavsiye ederim isolate graphical.target. Örnek kenar durumu: github.com/systemd/systemd/issues/6505
sourcejedi

0

systemd , sysV init sistemindeki çalışma seviyeleri için bir karşı hedef olarak hedefler getirdi. sytemd geliştiricileri sysV betiklerinin çoğuyla neredeyse uyumlu hale getirdiler. Aynı şey için de geçerlidir . Bu sistemd eşdeğerine çevrilir.telinit <runlevel>

Örneğin telinit 0makineyi kapatır. systemd, powleff.target ile 0 seviyesi ile aynı şeyi yapar . Yani poweroff.target'itelinit 0 etkinleştirmek için systemd tarafından çevrilir .

Ancak sytemd ve sysV init sistemleri ile ilgili bazı uyumluluk sorunları var-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibility .

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.