saya tidak tahu tentang jawaban di bawah ini, tapi di RHEL / Centos 7.6 init 1atau init 3atau init 5atau init 6atau init 0atau runlevelmasih berperilaku seperti mereka selalu memiliki, dan itu semua saya peduli. Sintaksnya jauh lebih mudahsystemctl blabla blabla.blabla
Di dalam SystemD (aemon), runlevel diekspos sebagai "Target." Konsepnya masih ada, tetapi alur kerja untuk menghasilkan hasil yang diinginkan untuk kebutuhan Anda berbeda.
Yang terlampir harus menjelaskan masalah ini.
Bagaimana cara mengubah runlevel saat ini?
$ systemctl isolate runlevelX.target
Bagaimana cara mengubah runlevel default untuk boot berikutnya?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGETDESTINATION
-s menciptakan tautan simbolis
-f menghapus file tujuan yang ada
ATAU (seperti yang disarankan @centimane) cukup gunakan perintah "diberkati" systemd:
systemctl set-default [target name].target
Bagaimana cara mengidentifikasi runlevel saat ini?
Masih bisakah saya menggunakan perintah init untuk beralih antar runlevel?
drpaneas
2
Jika paket systemd Anda dibangun dengan dukungan compat SysV, itu akan menyertakan symlink telinit ke biner systemd, yang, ketika disebut sebagai telinit, akan memetakan runlevel 0-6 ke target systemd - periksa telinit (8) untuk daftar pemetaan tersebut .
Wieland
2
Untuk mengubah target default, Anda harus menggunakan systemctl set-default [target name].targetdaripada membuat tautan secara manual.
Centimane
13
Tidak. Karena orang-orang systemd sendiri menulis dua kali lipat, sekali di telinitmanual mereka dan sekali di runlevelmanual mereka , runlevel adalah "usang". Anda bisa melupakan runlevel.
Hal-hal ini sebenarnya tidak ada di systemd sama sekali, selain beberapa shims kompatibilitas.
Ada beberapa tautan simbolis untuk nama target, tetapi target ini tidak pernah benar-benar digunakan oleh systemd.
Sebaliknya, proses bootstrap menggunakan a default.target(dan karenanya satu atau keduanya dari a graphical.targetdan a multi-user.target), a rescue.target, atau a emergency.target. Dan proses penutupan melibatkan a shutdown.target, a reboot.target, a halt.target, atau a poweroff.target. Tidak ada target level run yang terlibat dalam bootstrap atau shutdown.
The telinitperintah, yang satu mungkin berpikir menggunakan kompatibilitas link simbolik untuk memetakan argumen command-line-nya, tidak melakukan itu. Ada meja tertanam dalam kode sumber dari telinitprogram dan nomor 2, 3, 4, dan 5sebagai argumen untuk perintah didesain untuk memetakan ke multi-user.targetdan graphical.target.
systemd-update-utmp juga memiliki meja bawaan internal.
Tidak ada "tabel init" dari hal-hal runlevel. systemd hanya kompatibel dengan van Smoorenburg rc, bukan dengan van Smoorenburg init.
Tidak ada nilai "level run saat ini" yang dikelola oleh systemd sendiri. Sebaliknya, hampir seluruhnya tidak berdokumen systemd-update-utmpperintah beroperasi secara internal dalam hal aktivasi menyatakan dari rescue.target, multi-user.target, dan graphical.target.
systemd-sysv-generator, generator unit layanan kompatibilitas mundur systemd, menggabungkan /etc/rc[234].ddirektori menjadi hanya satu Wanted-Byhubungan ke multi-user.targetdalam unit layanan yang dihasilkan. Tidak ada referensi aktual untuk menjalankan level di unit layanan yang dihasilkan. (Dulu, bertahun-tahun yang lalu, tetapi orang-orang systemd menemukan bahwa ini salah, karena mereka tidak dirujuk di tempat lain.)
Jika seseorang adalah pengguna sistem yang membangun systemd seperti yang dilakukan Arch Linux untuk si penanya di " Mengapa` init 0` menghasilkan "Kelebihan Argumen" pada Arch instal? ", Seseorang bahkan tidak mendapatkan shim kompatibilitas, dan perintah seperti itu sebagai init 0akibat dari perilaku systemd "asli", yaitu untuk mengeluh bahwa perintah telah salah dipanggil.
Bacaan lebih lanjut
Lennart Poettering et al .. runlevel. halaman manual systemd. Freedesktop.org.
Lennart Poettering et al .. telinit. halaman manual systemd. Freedesktop.org.
Lennart Poettering et al .. bootup. halaman manual systemd. Freedesktop.org.
Jadi seperti yang Anda lihat, konsep runlevel memang ada, tetapi cukup usang karena fakta bahwa file runlevel.target sebenarnya bukan file "nyata" tetapi tautan lunak ke skema file baru, modern, lebih baik yang dinamai systemd suka menyebutnya "target".
Jadi, jika Anda ingin melakukan sth seperti telinit 5itu akan seperti ini: systemctl isolate runlevel5.target
yang identik dengan: systemctl isolate graphical.target(direkomendasikan menurut saya).
Jika Anda tertarik untuk mengetahui semua target yang mungkin:
Ya, saya percaya Anda memahami ini dengan benar. Saya akan menjadi pengadopsi SystemD yang terlambat, karena sistem, langkah-langkah-langkah, sistem INIT adalah hal yang paling saya kenal ... Saya memuji bahwa Anda sedang menjelajahi SystemD. Bagian terbaik dari SystemD adalah multi-threading paralelnya, yang memungkinkan boot lebih cepat. Boot multi-Threading dapat diselesaikan dengan INIT.D, tetapi membutuhkan skrip BASH yang kuat.
Tyler Maginnis
BTW, ls -llsetara dengan ls -l. Anda mungkin ingin membiasakan diri menggunakan ls -ld.
G-Man Mengatakan 'Reinstate Monica'
telinit 0Saya telinit 6masih bekerja. Karena ini membantu migrasi, dan saya pikir sebagian besar distro masih belum melihat alasan untuk membatalkan dukungan. isolatejelas bercita-cita untuk meniru bagaimana run-level bekerja, tetapi ada berbagai kasus tepi kejahatan. Saya sangat merekomendasikan mengabaikan semua instruksi isolate runlevel5.targetatau bahkan isolate graphical.target. Contoh tepi kasus: github.com/systemd/systemd/issues/6505
sourcejedi
0
systemd memperkenalkan target sebagai mitra untuk runlevel di sistem inys sysV. pengembang sytemd membuatnya hampir kompatibel dengan sebagian besar skrip sysV. Sama terjadi untuk
telinit <runlevel>. Ini diterjemahkan ke dalam systemd equivalen.
Misalnya telinit 0mematikan mesin. systemd memiliki poweroff.target untuk melakukan hal yang sama seperti runlevel 0 . Jadi telinit 0diterjemahkan oleh systemd untuk mengaktifkan poweroff.target .
init 1
atauinit 3
atauinit 5
atauinit 6
atauinit 0
ataurunlevel
masih berperilaku seperti mereka selalu memiliki, dan itu semua saya peduli. Sintaksnya jauh lebih mudahsystemctl blabla blabla.blabla
Jawaban:
SystemD Run-Level Low-Down
Di dalam SystemD (aemon), runlevel diekspos sebagai "Target." Konsepnya masih ada, tetapi alur kerja untuk menghasilkan hasil yang diinginkan untuk kebutuhan Anda berbeda.
Yang terlampir harus menjelaskan masalah ini.
Bagaimana cara mengubah runlevel saat ini?
Bagaimana cara mengubah runlevel default untuk boot berikutnya?
ln -sf TARGET DESTINATION
-s
menciptakan tautan simbolis-f
menghapus file tujuan yang adaATAU (seperti yang disarankan @centimane) cukup gunakan perintah "diberkati"
systemd
:Bagaimana cara mengidentifikasi runlevel saat ini?
sumber
systemctl set-default [target name].target
daripada membuat tautan secara manual.Tidak. Karena orang-orang systemd sendiri menulis dua kali lipat, sekali di
telinit
manual mereka dan sekali dirunlevel
manual mereka , runlevel adalah "usang". Anda bisa melupakan runlevel.Hal-hal ini sebenarnya tidak ada di systemd sama sekali, selain beberapa shims kompatibilitas.
default.target
(dan karenanya satu atau keduanya dari agraphical.target
dan amulti-user.target
), arescue.target
, atau aemergency.target
. Dan proses penutupan melibatkan ashutdown.target
, areboot.target
, ahalt.target
, atau apoweroff.target
. Tidak ada target level run yang terlibat dalam bootstrap atau shutdown.telinit
perintah, yang satu mungkin berpikir menggunakan kompatibilitas link simbolik untuk memetakan argumen command-line-nya, tidak melakukan itu. Ada meja tertanam dalam kode sumber daritelinit
program dan nomor2
,3
,4
, dan5
sebagai argumen untuk perintah didesain untuk memetakan kemulti-user.target
dangraphical.target
.systemd-update-utmp
juga memiliki meja bawaan internal.rc
, bukan dengan van Smoorenburginit
.systemd-update-utmp
perintah beroperasi secara internal dalam hal aktivasi menyatakan darirescue.target
,multi-user.target
, dangraphical.target
.systemd-sysv-generator
, generator unit layanan kompatibilitas mundur systemd, menggabungkan/etc/rc[234].d
direktori menjadi hanya satuWanted-By
hubungan kemulti-user.target
dalam unit layanan yang dihasilkan. Tidak ada referensi aktual untuk menjalankan level di unit layanan yang dihasilkan. (Dulu, bertahun-tahun yang lalu, tetapi orang-orang systemd menemukan bahwa ini salah, karena mereka tidak dirujuk di tempat lain.)Jika seseorang adalah pengguna sistem yang membangun systemd seperti yang dilakukan Arch Linux untuk si penanya di " Mengapa` init 0` menghasilkan "Kelebihan Argumen" pada Arch instal? ", Seseorang bahkan tidak mendapatkan shim kompatibilitas, dan perintah seperti itu sebagai
init 0
akibat dari perilaku systemd "asli", yaitu untuk mengeluh bahwa perintah telah salah dipanggil.Bacaan lebih lanjut
runlevel
. halaman manual systemd. Freedesktop.org.telinit
. halaman manual systemd. Freedesktop.org.bootup
. halaman manual systemd. Freedesktop.org./etc/inittab
adalah sesuatu dari masa lalu. . Jawaban yang Sering Diberikan.sumber
Terima kasih banyak. Jadi, jika saya mengerti dengan benar:
Sebagai contoh:
Keluaran:
Jadi seperti yang Anda lihat, konsep runlevel memang ada, tetapi cukup usang karena fakta bahwa file runlevel.target sebenarnya bukan file "nyata" tetapi tautan lunak ke skema file baru, modern, lebih baik yang dinamai systemd suka menyebutnya "target".
Jadi, jika Anda ingin melakukan sth seperti
telinit 5
itu akan seperti ini:systemctl isolate runlevel5.target
yang identik dengan:systemctl isolate graphical.target
(direkomendasikan menurut saya).Jika Anda tertarik untuk mengetahui semua target yang mungkin:
sumber
ls -ll
setara denganls -l
. Anda mungkin ingin membiasakan diri menggunakanls -ld
.telinit 0
Sayatelinit 6
masih bekerja. Karena ini membantu migrasi, dan saya pikir sebagian besar distro masih belum melihat alasan untuk membatalkan dukungan.isolate
jelas bercita-cita untuk meniru bagaimana run-level bekerja, tetapi ada berbagai kasus tepi kejahatan. Saya sangat merekomendasikan mengabaikan semua instruksiisolate runlevel5.target
atau bahkanisolate graphical.target
. Contoh tepi kasus: github.com/systemd/systemd/issues/6505systemd memperkenalkan target sebagai mitra untuk runlevel di sistem inys sysV. pengembang sytemd membuatnya hampir kompatibel dengan sebagian besar skrip sysV. Sama terjadi untuk
telinit <runlevel>
. Ini diterjemahkan ke dalam systemd equivalen.Misalnya
telinit 0
mematikan mesin. systemd memiliki poweroff.target untuk melakukan hal yang sama seperti runlevel 0 . Jaditelinit 0
diterjemahkan oleh systemd untuk mengaktifkan poweroff.target .Tetapi ada beberapa masalah kompatibilitas dengan sistem init sytemd dan sysV-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities .
sumber