Sebenarnya saya tidak begitu yakin apakah saya harus menggunakan Shell Script, atau jika sudah ada beberapa cara. Tetapi pendekatan apa pun yang kami gunakan, saya ingin menjaga Layanan tetap berjalan sepanjang waktu.
Katakanlah iptables
sebagai contoh. Kemudian ..
- Setiap kali yang
iptables
layananstopped
atau (dengan kata lain) tidak berjalan, saya ingin menjadistarted
(ataurestarted
) .. secara otomatis setiap kali berhenti (atau tidak berjalan). - Dengan kata lain yang lebih sederhana, saya ingin menjaga Layanan tetap berjalan sepanjang waktu.
(Mungkin saya bisa memberikan frekuensi yang adil untuk memeriksa, jika melakukan pengecekan waktu-nyata adalah masalahnya. Jadi katakanlah, setiap 5 menit)
Satu-satunya cara saya bisa memikirkan, adalah dengan menggunakan Script Shell dengan Cron Tab.
- Apakah ada solusi pintar?
Terima kasih!
alerts
Anda buat tidak berfungsi.restarted
kapan saja berhenti, untuk alasan apa pun. Tidak masalah dengan memulai ulang.Jawaban:
Pembaruan Maret 2018
Jawaban ini sekarang sudah cukup lama, dan sejak itu ditulis systemd telah memenangkan perang pid1 di Linux. Dengan demikian, Anda mungkin harus membuat unit systemd , jika systemd dibangun untuk distribusi Anda (yang sebagian besar dari mereka).
Jawaban di bawah dipertahankan untuk anak cucu.
Jawaban monit di atas valid, tapi saya pikir saya akan menyebutkan beberapa alternatif:
Perlu diingat bahwa sistem operasi Anda telah menyelesaikan masalah manajemen proses. Secara tradisional, Linux telah menggunakan sysvinit, yang pada dasarnya adalah kumpulan skrip yang Anda lihat di init.d. Namun itu sangat bodoh dan tidak dapat memantau proses, skrip init.d rumit dan sedang diganti untuk alasan yang baik.
Sistem operasi yang lebih modern mulai menggantikan sysvinit, dan pelopornya adalah Pemula dan Systemd. Debian condong ke arah systemd, Ubuntu dikembangkan dan sudah cukup banyak beralih ke Upstart, dan seperti Debian Redhat / CentOS / Fedora sedang bergerak ke arah systemd. Jadi jika Anda menggunakan OS yang sudah menggantikan sysvinit saya akan merekomendasikan menggunakan apa yang ada di dalamnya. Skrip lebih mudah ditulis daripada skrip init.
Saya telah menggunakan runit dan sangat menyukainya, tetapi yang paling mudah digunakan adalah supervisor. Ini juga didokumentasikan dengan sangat baik, bekerja hampir di mana saja dan dikemas dalam semua distribusi utama.
Tapi apa pun yang Anda lakukan, tolong, tolong, jangan gunakan skrip shell. Ada begitu banyak hal yang salah dengan pendekatan itu!
sumber
iptables
adalah contoh yang buruk karena sebenarnya bukan layanan atau daemon yang berjalan, tetapi bagian dari kernel. Anda tidak dapat benar-benar "berhenti"iptables
, Anda hanya bisa memberikannya konfigurasi dan "menghentikan" itu melibatkan memberikannya konfigurasi kosong. Memang saya mengalami crash sistem Linux, tetapi pengaturan port forwardingiptables
terus bekerja.Pokoknya, utilitas yang dipanggil
monit
akan melakukan apa yang Anda inginkan. Jika Anda menggunakan Debian ituapt-get install monit
jauh. Ini agak terlibat untuk dipelajari tetapi sangat fleksibel.sumber
Kami menggunakan skrip sederhana ini untuk membuat peringatan dan memulai layanan jika tidak berjalan, Anda dapat menambahkan lebih banyak layanan juga ..
sumber
Solusi Alternatif Untuk Desktop (KDE):
Kita dapat menonton layanan dengan Status Server Applet / Widget ... setelah menginstalnya, tambahkan saja perintah ke widget untuk memantau layanan Anda
Contoh:
systemctl status httpd.service
Versi KDE 4: https://store.kde.org/content/show.php?content=101336
Versi KDE 5: https://store.kde.org/p/1190292/
sumber
Saya tahu ini sudah beberapa tahun sejak pertanyaan itu diajukan. tetapi dengan systemd (kebanyakan tersedia dengan centos dan REHL) Anda dapat menjalankan perintah bash ini dengan cron untuk memeriksa dan memulai kembali jika layanan sedang down.
simpan di direktori tempat sampah Anda dan beri nama seperti monitor. Berikan izin file yang sesuai untuk itu. kemudian jalankan seperti
jika Anda ingin memeriksa layanan redis dan memulai kembali / memulai jika diperlukan.
terakhir tambahkan ini ke pekerjaan cron Anda.
Semoga ini bisa membantu
sumber
Untuk menambah daftar panjang pengawasan init / svc, sebagai subdirektori ke S6 ada anak baru di blok, 66, yang menangani manajemen layanan s6 dan masuk dengan cepat, ringan, dan ramah pengguna. Ini adalah tautan ke dokumentasi resmi untuk Obarun-Linux https://web.obarun.org/software
Ini adalah FAQ tentang cara menggunakan perangkat lunak 66 ini dan memahami s6 http://sysdfree.wordpress.com/266
Karena rilis stabilnya hanya satu bug yang ditemukan terkait dengan perubahan kernel dari 4,20 -> 5,0, semua masalah lain yang dilaporkan berkaitan dengan orang yang mempelajari sesuatu yang baru. Jika manajemen layanan harus menjadi lebih sederhana dari ini, mungkin lebih baik untuk beralih ke ms-windows (Linus melarang). Untuk melihat dalam kehidupan nyata bagaimana ini bisa bekerja kita hanya perlu mengunduh live.iso Obarun dan bermain dengannya. Instal layanan dan 66-skrip mereka memungkinkan mereka, membunuhnya, melihat log mereka, menghentikan mereka dan memulainya (saat diaktifkan), banyak layanan menjadi pohon dan memiliki pohon layanan memulai dan berhenti bersama-sama, memiliki layanan tingkat pengguna secara terpisah dari sistem. Ia melakukan apa yang s6 lakukan dengan baik dan membuatnya lebih mudah bagi pengguna untuk mengeksploitasi sistem anti peluru di bawah s6.
Unduhan gambar dapat ditemukan di sini: https://web.obarun.org/index.php?id=74 md5 periksa file https://repo.obarun.org/iso/
Selain init dan manajemen layanan S6 / 66 tidak memiliki dependensi dari apa pun pada sistem. Ini adalah lapisan sistem dasar yang membuat perangkat lunak lainnya bekerja sendiri, init / svc-mgmt blind. Semua s6 dan 66 ditulis dalam C dan tidak spesifik linux, atau spesifik glibc. Server (s6 penulis) Skarnet telah berjalan selama hampir satu dekade tanpa banyak jeda pada sistem yang dibangun khusus musl. Alpine, Void, dan Adelie saat ini juga memiliki perangkat lunak s6 pada repositori mereka, Adelie menggunakannya untuk pengawasan layanan secara default. Void sekarang membawa 66 juga. Saya tidak tahu apakah dan sampai sejauh mana seseorang telah porting s6 ke xxBSD atau sistem xxIX lainnya.
sumber