Bagaimana layanan sistem dimulai pada 12.10?

12

Satu hal yang selalu membingungkan saya di Ubuntu adalah bagaimana layanan sistem dimulai. Saya tahu Ubuntu menggunakan Upstart dan mendukung SysV, tetapi yang mana yang digunakan untuk memulai layanan? Ini penting ketika Anda ingin "manual" memulai layanan.

Misalnya, pada sistem saya, saya memiliki file untuk layanan berikut di /etc/init.d/<service>(SysV) dan /etc/init/<service>.conf(Pemula):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Jadi jika saya ingin menonaktifkan eksekusi MySQL saat startup, saya harus menggunakan cara pemula atau cara SysV untuk menonaktifkannya? Juga, bagaimana saya bisa tahu yang mana yang benar-benar digunakan untuk memulai layanan generik?

Edit

Yang benar-benar diragukan di sini bukanlah bagaimana menonaktifkan / mengaktifkan layanan menggunakan SysV / Upstart. Yang benar-benar membingungkan saya adalah bahwa beberapa layanan tampaknya didefinisikan (dan diaktifkan) di SysV dan pemula pada saat yang sama. Apakah ada prioritas di antara mereka (seperti jika mysqldiaktifkan di kedua peluncurannya menggunakan SysV)? Atau mungkinkah salah satu alat menggunakan yang lain di latar belakang?

Salem
sumber
1
Lihat jawaban yang diterima di sini: askubuntu.com/questions/133807/… memiliki beberapa tautan menarik.
Rinzwind

Jawaban:

2

Mengenai layanan yang didefinisikan dalam SysV dan pemula, umumnya jika Anda me-restart melalui SysV Anda akan melihat sesuatu seperti ini:

al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Maksud saya ini adalah bahwa Upstart lebih disukai untuk layanan ini, dan implementasi SysV hanyalah pembungkus.

Juga, saya pikir Anda memiliki arti direktori ke belakang. / etc / init adalah konfigurasi pemula, /etc/init.d adalah kompatibilitas SysV, tetapi ini hanya symlinks untuk memulai untuk jenis layanan ini.

Alistair Buxton
sumber
6

Itu sangat tergantung pada aplikasi dan pengelolanya kemasan.

Ada preferensi yang kuat untuk skrip pemula karena mereka menangani acara (yang umumnya merupakan hal yang hebat) tetapi banyak aplikasi tidak memiliki skrip pemula yang cukup baik atau pengelola aplikasi telah memilih untuk tetap dengan default (aplikasi atau Debian) .

Bagaimanapun, Anda berada dalam posisi di mana Anda harus beradaptasi.

  • Untuk Pemula:
    • Ubah nama file menjadi sesuatu yang tidak berakhir .conf, atau
    • Tambahkan manualke file. Ini akan memungkinkan Anda untuk memuat layanan secara manual.
  • Untuk layanan yang lebih lama:

    update-rc.d -f <service> remove
    

Jika Anda memiliki /etc/init.d/naskah untuk sesuatu dan sebuah /etc/init/naskah dan Anda ingin memeriksa apakah versi init.d masih hidup, Anda dapat memeriksa dengan:

ls -l /etc/rc?.d/*<service>

Jika Anda melihat banyak symlink, itu diinstal di init SysV lama.

Oli
sumber
Jadi jika saya memiliki layanan yang diaktifkan di SysV dan Pemula (misalnya, acpid), saya dapat menganggap itu diluncurkan oleh SysV? Atau jika saya ingin menonaktifkannya saya perlu melakukannya menggunakan update-rc.ddan trik mengubah nama?
Salem