Saya telah mengelola instalasi server baik di dalam maupun di luar rasa Ubuntu untuk beberapa waktu - saya menjadi cukup terbiasa /etc/init.d/
untuk memulai ulang layanan. Sekarang saya menerima pesan ini:
root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048
Ini sepertinya telah dibawa dalam LTS terbaru Ubuntu - mengapa? Apa yang begitu buruk tentang /etc/init.d/
dan apa ada perbedaan antara service
dan /etc/init.d/
?
Jawaban:
/etc/init.d
skrip adalah cara lama dalam melakukan sesuatu. Mereka berasal dari standar System V. Namun, skrip tersebut dipecat hanya dalam urutan tertentu, sehingga tidak ada dependensi nyata yang dapat dibuat.Oleh karena itu, pemula telah dikembangkan dengan maksud untuk mengganti semua
/etc/init.d
skrip dengan skrip pemula (dalam/etc/init
).service
memungkinkan transisi yang lancar dari/etc/init.d
skrip ke skrip pemula. Di masa depan, ketika semakin banyak skrip ditransfer ke pemula, layanan akan tetap berfungsi karena menemukan kedua kemungkinan.sumber
Periksa juga halaman manual untuk perintah layanan:
man service
service
menjalankan skrip di lingkungan yang dapat diprediksi (direktori kerja adalah / dan hanya 2 variabel lingkungan yang ditetapkan: LANG dan TERM). Ini juga menambah kemampuan untuk melakukannya--full-restart
. Jadi ringkasnya:service
dapat menjalankan skrip dari / etc / init atau /etc/init.d (pemula atau Sistem V)service
menjalankan skrip di lingkungan yang dapat diprediksi.Aspek "lingkungan yang dapat diprediksi" dapat menyebabkan masalah jika skrip Anda bergantung pada variabel lingkungan karena beberapa alasan. Mungkin ada cara untuk menyiasatinya, tapi saya tidak tahu apa itu, dan itu di luar cakupan pertanyaan ini :)
sumber