restart program setiap x menit?

10

Saya memiliki program Java mutithreaded yang menggunakan pustaka opensource dan pustaka ini memiliki beberapa bug yang menyebabkan kebuntuan. Saya telah melaporkan kutu tetapi perlu waktu untuk memperbaikinya, saya harus terus menggunakan program ini dan selama itu restart setiap 2-3 jam itu akan melakukan pekerjaan untuk saya. Apakah ada cara untuk membuat program restart setiap x menit?

Arya
sumber
3
Anda dapat menulis skrip yang akan mematikan dan memulai kembali tugas setiap 2-3 jam.
gt6989b
Untuk menindaklanjuti dengan apa @ gt6989b, saya akan menulis skrip Python yang hanya loop dan menunggu hingga 2-3 jam telah berlalu, dan kemudian restart program. Anda mungkin menemukan subproses Python dan modul sh berguna.
Terobosan

Jawaban:

12

Anda dapat mencoba melakukannya di crontab:

crontab -e

kemudian

 11 */3 * * * /usr/bin/pkill -f appli_name; /path/to/appli_name & &>/dev/null

The crontabperintah berarti:

  • setiap 3 jam
  • bunuh appli_name
  • mulai appli_name di latar belakang
Gilles Quenot
sumber
Inilah cara saya saat ini memecahkan masalah serupa. Saya me-restart perangkat lunak tertentu setiap malam pukul 0:00 melalui cron, karena perangkat lunak memiliki kecenderungan untuk merusak file negaranya setelah 4-5 hari. Saya telah menginstal perangkat lunak sebagai layanan dan kemudian menjalankannya service <appname> restart > /dev/null 2>&1pada waktu yang diinginkan.
Daniel Andersson
2

Saya menyarankan Anda untuk mengkonfigurasi Supervisor untuk tugas Anda. Itu dapat memonitor proses, restart jika gagal, juga menyediakan pengalihan output dan fitur bagus lainnya. Lihat contoh untuk program untuk memulai.

gertvdijk
sumber
+1, ini tampaknya merupakan solusi yang lebih "bersih" dibandingkan crontab(meskipun kedua solusi bekerja dengan baik). Namun, saya menemukan Supervisor lebih baik dalam mengkonfigurasi sinyal apa untuk mengirim proses dan kapan (yaitu kapan mengirim SIGTERM, dan berapa lama menunggu sebelum mengirim SIGKILL, dll ...).
Terobosan