it-swarm-id.com

Apa perbedaan antara "Layanan" dan "/etc/init.d/"?

Saya telah mengelola instalasi server baik di dalam maupun di luar rasa Ubuntu untuk beberapa waktu - saya telah menjadi sangat disesuaikan dengan /etc/init.d/ untuk memulai ulang servcies. Sekarang saya menerima pesan ini:

[email protected]:~# /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 buruk tentang /etc/init.d/ dan apa/apakah ada perbedaan antara service dan /etc/init.d/?

113
Marco Ceppi

Skrip /etc/init.d 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 baru telah dikembangkan dengan maksud untuk menggantikan semua skrip /etc/init.d dengan skrip pemula (dalam /etc/init).

service memungkinkan transisi yang lancar dari skrip /etc/init.d ke skrip pemula. Di masa depan, ketika semakin banyak skrip ditransfer ke pemula, layanan akan tetap berfungsi karena menemukan kedua kemungkinan.

103
txwikinger

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). Itu juga menambahkan kemampuan untuk melakukan --full-restart. Jadi ringkasnya:

  1. service dapat menjalankan skrip dari/etc/init atau /etc/init.d (pemula atau System V)
  2. 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 :)

28
Joe Marty