Mungkin ini adalah pertanyaan sepele, tetapi tidak sepenuhnya jelas bagi saya. Di salah satu server kami, kami memiliki beberapa proses latar belakang yang berjalan yang dimulai dengan service
dan beberapa lainnya yang dimulai dengan systemctl
, seperti ini:
$ service nginx start
$ systemctl start gunicorn
Apa perbedaan antara kedua perintah? Mana yang merupakan cara yang disukai untuk menangani layanan latar belakang? Bagaimana cara mengkonfigurasi perintah yang disukai?
Jawaban:
service
adalah perintah "tingkat tinggi" yang digunakan untuk memulai dan menghentikan layanan di berbagai unix dan linux. Bergantung pada manajer layanan "tingkat bawah",service
pengalihan pada binari yang berbeda.Misalnya, pada CentOS 7 ia dialihkan ke
systemctl
, sedangkan pada CentOS 6 itu langsung memanggil/etc/init.d
skrip relatif . Di sisi lain, di Ubuntu yang lebih lama rilisnya dialihkan keupstart
service
memadai untuk manajemen layanan dasar, sementara panggilan langsungsystemctl
memberikan opsi kontrol yang lebih besar.sumber
systemctl
pada dasarnya adalah versi yang lebih kuatservice
.Dengan
service
Anda hanya dapat melakukan perintah yang berkaitan dengan layanan (yaitustatus
,reload
,restart
) sedangkan dengansystemctl
Anda dapat menggunakan perintah yang lebih maju seperti:systemctl is-failed name.service # check if service failed to load
Atau layanan masking:
systemctl mask name.service
Ada banyak info bagus di halaman ini dari Ask Ubuntu.
sumber
systemctl
adalah utilitas utama untuk mengendalikan daemon / layanansystemd
,sedangkan
service
perintahnya adalah utilitas tradisional diSysVinit
dunia.Salah satu fitur systemd adalah agar kompatibel dengan perintah SysVinit / legacy,
jadi, jika Anda memiliki
systemctl
perintah,service foo start
akan menjadi pembungkussystemctl start foo
.Kisah yang sama untuk
chkconfig
.sumber