systemd
memberi kita rangkaian systemctl
perintah yang sebagian besar digunakan untuk mengaktifkan layanan untuk memulai saat boot. Kami juga dapat memulai, menghentikan, memuat ulang, memulai kembali, dan memeriksa status layanan dengan bantuan systemctl
.
Kita dapat melakukan, misalnya sudo systemctl enable service_name
,, dan service_name
secara otomatis akan mulai pada saat boot. Kami juga dapat menonaktifkan layanan untuk tidak memulai saat boot.
Apakah satu-satunya perbedaan antara perintah service
dan systemctl
yang systemctl
dapat digunakan untuk memungkinkan dimulainya layanan saat run time? Bisakah kita menggunakan systemctl
layanan apa saja? Apa perbedaan signifikan lainnya yang ada?
command-line
services
systemd
luv.preet
sumber
sumber
Jawaban:
The
service
perintah adalah script wrapper yang memungkinkan administrator sistem untuk memulai, menghentikan, dan memeriksa status layanan tanpa khawatir terlalu banyak tentang sistem init aktual yang digunakan. Sebelum pengenalan systemd, itu adalah wrapper untuk/etc/init.d
skrip daninitctl
perintah Upstart , dan sekarang itu adalah wrapper untuk keduanya dansystemctl
juga.Gunakan sumbernya, Luke!
Ini memeriksa untuk pemula:
Jika itu tidak berhasil, ia akan mencari systemd:
Dan jika itu gagal juga, jatuh kembali ke
/etc/init.d
skrip System V :Karena
service
perintah ini adalah pembungkus yang cukup sederhana, itu hanya mendukung sebagian kecil tindakan dibandingkan dengan apa yang mungkin disediakan oleh sistem init.Untuk portabilitas atas berbagai versi Ubuntu, pengguna dapat menggunakan
service
perintah untuk memulai, menghentikan, memulai kembali, atau memeriksa status layanan dengan andal . Untuk lebih tugas yang kompleks, bagaimanapun, perintah aktual yang digunakan, bahwainitctl
atausystemctl
atau/etc/init.d
skrip mungkin harus digunakan secara langsung.Lebih lanjut, sebagai pembungkus,
service
skrip dalam beberapa kasus juga melakukan lebih dari yang dapat dilakukan oleh perintah setara langsung. Sebagai contoh:/etc/init.d
skrip di lingkungan yang bersih. (Perhatikan doa perintah panjangenv
dalamrun_via_sysvinit
fungsi di atas.)restart
pada sistem pemula untuk kombinasistop
/start
, karena dataraninitctl restart
akan kesalahan jika layanan belum berjalan.Ini menghentikan soket ketika menghentikan layanan systemd yang memiliki soket terkait:
Layanan pemula diaktifkan secara langsung dalam file konfigurasi layanan (atau dinonaktifkan melalui penggantian), dan skrip System V diaktifkan atau dinonaktifkan dengan
update-rc.d
perintah (yang mengelola symlink di/etc/rc*
direktori), sehinggaservice
perintah tidak pernah terlibat dalam mengaktifkan atau menonaktifkan layanan pada saat boot .sumber
Ada jauh lebih banyak dari apa yang Anda sebutkan yang
systemctl
mampu melakukannya.systemd
bekerja dengan unit, ada berbagai jenis unit: target, layanan, soket, dll. Target adalah konsep yang sama dengan runlevel, mereka adalah sekelompok unit bersama-sama.Anda dapat menggunakan
systemctl
untuk mengatur atau mendapatkan target sistem default.Anda dapat masuk ke target lain:
Target lainnya adalah: multiuser, grafis, recue, darurat, reboot, poweroff.
Seperti yang Anda katakan, Anda dapat menggunakan
systemctl
untuk mengelola layanan, beberapa perintah lain yang terkait dengan manajemen layanan yang saya ketahui adalah:Anda dapat menggunakannya untuk mencari tahu tentang status layanan:
Anda dapat menutupi atau membuka kedok layanan:
Jika Anda menutup layanan yang akan ditautkan
/dev/null
, maka secara manual atau otomatis layanan lain tidak dapat aktif / mengaktifkannya. (Anda harus membuka kedok terlebih dahulu).Penggunaan lain dari systemctl adalah untuk membuat daftar unit:
Yang mencantumkan semua jenis unit, dimuat dan aktif.
Daftar unit layanan:
Atau untuk membuat daftar semua unit yang tersedia tidak hanya yang dimuat dan diaktifkan:
Anda dapat membuat alias atau bahkan mengendalikan mesin jarak jauh
Di sisi lain
service
melakukan apa yang harus dilakukan, mengelola layanan dan tidak ada hubungannya dengan bisnis orang lain;)sumber
service
bisa dilakukan tetapi tidaksystemctl
?service start
upaya yang gagal . Pra-systemd,service start
akan membiarkan saya melihat mengapa layanan saya tidak akan mulai. Post-systemd, saya harus melihat empat atau lima log yang berbeda sebelum dapat menemukannya. Semua yang mengatakan, komentar saya tidak diragukan lagi topik dan mungkin akan dihapus.service
perintah, bukankah itu bagian dari pertanyaan?