Apakah pemula dan pengawas digunakan untuk hal yang sama?

13

Saya memiliki beberapa proses berbasis jvm yang saya harus pastikan mulai kapan server saya reboot, dan juga jika berhenti karena kesalahan yang tidak terduga dll

Saya menjalankan Ubuntu 12,04 untuk berjaga-jaga.

Saya telah melihat contoh skrip pemula dan saya cenderung condong seperti itu, tetapi saya ingin memahami perbedaan apa yang terjadi dengan sesuatu seperti pemula atau pengawas.

Apakah mereka digunakan untuk tujuan yang sama persis atau ada perbedaan fungsi?

Blankman
sumber

Jawaban:

12

Perbedaannya adalah bahwa pemula adalah pengganti init sedangkan supervisord adalah a Process Control System. Penjelasan ini diberikan di situs pengawas :

Ini berbagi beberapa tujuan program yang sama seperti launchd, daemontools, dan runit. Tidak seperti beberapa program ini, ini tidak dimaksudkan untuk dijalankan sebagai pengganti init sebagai "proses id 1". Sebaliknya itu dimaksudkan untuk digunakan untuk mengendalikan proses yang terkait dengan proyek atau pelanggan, dan dimaksudkan untuk memulai seperti program lain pada saat boot.

Ini berarti bahwa supervisord itu sendiri akan dimulai oleh pemula, baik melalui file pekerjaan pemula, atau skrip init sysV. Secara pribadi, saya telah memilih untuk menggunakan manajer proses daripada init sederhana mulai karena alasan berikut:

  1. Layanan tidak daemonisasi dengan benar
  2. Layanan ini dikenal mati dan perlu dipantau dan dimulai kembali

Contoh dari program yang tidak daemonisasi dengan benar adalah ketika ia tidak menutup stdout dan stderr dan terus menulis data ke lokasi-lokasi tersebut. Supervisord dapat menangani pencatatan output itu.

jordanm
sumber
Saya mengerti, tidak yakin saya mengerti sepenuhnya, tetapi saya pikir pemula juga dapat memulai kembali proses jika gagal.
Blankman
@Bankman Saya kira bahkan ada sedikit alasan dengan sistem init modern
jordanm
Saya perhatikan bahwa solusi yang tepat untuk layanan yang tidak daemonisasi dengan benar akan memperbaiki bug dengan layanan yang menyebabkannya tidak daemonisasi dengan benar. Saya akan memberikan sesuatu seperti supervisord akan berguna untuk # 2.
Shadur
1
@ shadur Saya tidak setuju itu adalah solusi terbaik. Prosesnya mungkin tidak Anda miliki, jadi Anda tidak bisa memperbaikinya. Bahkan jika Anda dapat memperbaikinya, tidak peduli berapa banyak bug yang Anda perbaiki, Anda tidak akan pernah tahu bahwa tidak ada lagi yang mengintai, dan bertahun-tahun kemudian, proses Anda akan mati sekali lagi, dalam produksi, karena beberapa situasi yang belum pernah terpapar. sebelumnya, seperti kondisi jaringan atau basis data yang tidak biasa. Apakah Anda lebih suka bahwa situs Anda tetap offline, membuat frustrasi pengguna, membebani Anda dengan uang? Tidak. Anda memerlukan alat untuk memulai kembali layanan. Titik.
Jonathan Hartley