Sampai saat ini ada cara sederhana dan efektif untuk memulai / menghentikan / memulai kembali layanan:
service nginx start|stop|restart
Ini bekerja dengan sempurna selama bertahun-tahun, ... sampai beberapa smart-pants memutuskan untuk memperbaikinya dan sekarang saya berhadapan dengan sistem Debian / Ubuntu di mana service
skrip tidak melakukan apa-apa (karena saya seharusnya menggunakan hal-hal seperti systemctl start nginx.service
(lebih lama lagi, tidak ada pelengkapan otomatis yang berfungsi, ...)
Pertanyaan saya merujuk khusus ke Debian dan Ubuntu tetapi juga akan membantu untuk mencakup distro CentOS / RedHat juga.
Jadi, adakah yang bisa menyelamatkan saya dari perubahan yang ditakdirkan ini?
Seandainya tidak jelas, saya mencari cara yang konsisten untuk menangani itu, yang akan bekerja pada Debian 7.x, 8.x, Ubuntu LTS terbaru dan non-LTS.
PS. Di luar ruang lingkup pertanyaan khusus ini, tetapi pujian ekstra diberikan jika solusinya juga mencakup bagian aktifkan dan nonaktifkan untuk layanan.
service
perintah lama dengan pembungkus yang memanggil servicectl?service
benar-benar tidak melakukan apa pun untuk Anda? Ini berfungsi seperti yang diharapkan pada LMDE saya (yang pada dasarnya adalah pengujian Debian), saya tidak berpikir itu adalah hal khusus LMDE. Ini juga berfungsi seperti yang diharapkan di VM Ubuntu saya.Jawaban:
Ada sejumlah variasi boot dan sistem kontrol layanan di seluruh platform Unix karena sejarahnya yang kusut.
Sistem
service\chkconfig
berbasis yang Anda temukan sederhana dan efektif umumnya disebut sebagai gaya SysVinit dan merupakan langkah besar di sepanjang jalan menuju semacam standardisasi. Anda akan menemukan gaya boot ini di RHEL / CentOS (EL) melalui rilis 6, Fedora hingga 14, dan pada distribusi berbasis Debian / Ubuntu hingga 2015. Itu bukan satu-satunya sistem boot sekitar, gaya BSD (sederhana) Sistem init masih memiliki banyak penggemar.SysVinit bukan solusi yang sempurna (apa itu?) Dan Systemd dirancang untuk mengatasi banyak masalah; ini adalah
systemctl
sistem berbasis perintah yang sekarang Anda alami. Meskipun tidak disukai secara universal (orang membenci perubahan, mengasapi, dll), tidak ada keraguan bahwa itu cepat menjadi standar defacto di sebagian besar distribusi.Oleh karena itu, melihat langsung ke depan jawaban atas pertanyaan awal Anda adalah:
Cara standar untuk mengontrol layanan di sebagian besar distribusi Linux sekarang
systemctl
!Berapa lama ini akan berlaku adalah dugaan siapa pun; mungkin hanya sampai ada sesuatu yang lebih baik dan diadopsi secara luas.
Saya yakin akan ada pembungkus yang tersedia untuk memungkinkan, favorit Anda saat ini,
service/chkconfig
perintah untuk terus melakukan sebagian besar hal-hal yang waras, tetapi dengan kurva pembelajaran khusus ini mungkin lebih baik untuk tidak melawannya. Mungkin melihat ke depan, untuk sementara waktu juga akan adasystemctl
pembungkus untuk sistem yang lebih tua, untuk membuat pengelolaannya berdampingan dengan yang saat ini tidak terlalu merepotkan;)sumber
... yang, seperti yang orang lain katakan dalam komentar, apa yang telah dilakukan sejak lama .
The
/usr/sbin/service
perintah pada Debian 8 adalah bagian dari paket sysvinit-utils. Sudah ada sejak 2009. Ini adalah tambahan RedHat yang berasal dari Debian khusus untuk paket sumber sysvinit asli, dan seperti dapat dilihat dari membaca skrip, ia mengenali kedua systemd running dan keberadaan pekerjaan pemula, memberikan perintah kepadasystemctl
daninitctl
( melalui alias-nya) masing-masing. Ini sudah dilakukan sejak 2013.service name action
cukup banyak tersedia bahkan pada sistem operasi non-Linux. Ia bahkan akan bekerja pada sebagian besar BSD, karena mereka juga memilikiservice
perintah sendiri . Ada jugaservice
perintah shim dalam paket nosh yang diterjemahkan menjadi . Tapi ...system-control action name
service
perintah.service
perintah BSD memiliki masalah yang sudah lama diketahui bahwa administrator sistem telah menceritakan kisah perang selama beberapa dekade.Mengaktifkan dan menonaktifkan layanan adalah situasi yang serupa. Meskipun SuSE
chkconfig
Program (tersedia dikemas untuk Debian dan Ubuntu) sangat berbeda dengan Fedora satu (mereka yang ditulis dalam bahasa pemrograman yang sama sekali berbeda, bahkan - satu dikompilasi, satu ditafsirkan), ada minimal umum sintaks, dengan tindakan yang atau . Tapi ...chkconfig name action
on
off
chkconfig
pada BSD, karena alat konvensional untuk ini adalahsysrc
OpenBSD atau yang lebih barurcctl enable
danrcctl disable
. Adachkconfig
danrcctl
shims dalam paket nosh yang diterjemahkan ke dan .system-control enable name
system-control disable name
chkconfig
tahu tentang systemd dan bertindak sebagai shim untuksystemctl enable
dansystemctl disable
. SuSEchkconfig
tidak memiliki pengetahuan tentang sistemd.Bacaan lebih lanjut
script/service
. init-system-helpers. Arsip sumber Debian.telinit
. Panduan nosh . 1.20. Perangkat Lunak JdeBP.service
perintah . tidak ada halaman. Perangkat Lunak JdeBP.service
. §8. Halaman Manual FreeBSD.sumber
Tidak ada cara standar untuk memulai dan menghentikan layanan di Linux.
Cobalah alat manajemen konfigurasi / orkestrasi: Ansible , Chef , Saltstack , Puppet atau apa pun.
Anda dapat memulai dan mengaktifkan layanan dengan Ansible:
Lihatlah kelas LinuxService di
service
modul Ansible's :sumber
Masalah Anda adalah bahwa Debian / Ubuntu telah beralih ke yang baru
systemd
sebagai pengganti yang lamasysvinit
. Tanyakan yang mana yang lebih baik dan Anda akan memulai perang api, tetapi Anda dapat beralih kembali ke yang lamasysvinit
, periksa ini jika Anda ingin kembali.sumber