programı her x dakikada bir yeniden başlat?


10

Açık kaynaklı bir kitaplık kullanan mutithreaded Java programım var ve bu kitaplıkta kilitlenmeye neden olan bazı hatalar var Hata bildirdim, ancak düzeltilmesi zaman alacak, bu programı kullanmaya devam etmeliyim ve sürece her 2-3 saatte bir yeniden başlar, bu benim için işi yapacak. Programın her x dakikada bir yeniden başlatılmasının bir yolu var mı?


3
Her 2-3 saatte bir görevi öldürecek ve yeniden başlatacak bir komut dosyası yazabilirsiniz.
gt6989b

@ Gt6989b ile ne takip etmek için, sadece döngüler ve 2-3 saat geçene kadar bekleyen ve daha sonra programı yeniden başlatan bir Python komut dosyası yazacağım. Python alt işlemini ve sh modüllerini faydalı bulabilirsiniz.
Atılım

Yanıtlar:


12

Bunu yapmak için deneyebilirsiniz crontab:

crontab -e

sonra

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

crontabKomut ortalama:

  • 3 saatte bir
  • appli_name'i öldür
  • arka planda appli_name başlat

Şu anda benzer bir sorunu bu şekilde çözüyorum. Yazılımın 4-5 gün sonra durum dosyasını bozma eğilimi gösterdiğinden, belirli bir yazılımı her gece cron üzerinden 0: 00'da yeniden başlatırım. Yazılımı bir hizmet olarak yükledim ve sonra service <appname> restart > /dev/null 2>&1istenilen zamanlarda çalıştım .
Daniel Andersson

2

Göreviniz için Süpervizörü yapılandırmanızı öneririm . Süreci izleyebilir, başarısız olursa yeniden başlayabilir, ayrıca çıkış yeniden yönlendirmesi ve diğer güzel özellikler sağlar. Başlamak için program örneğine bakın .


+1, bunun aksine daha "temiz" bir çözüm gibi görünüyor crontab(her iki çözüm de işe yarıyor olsa da). Bununla birlikte, Süpervizörün hangi sinyallerin bir süreci ve ne zaman gönderileceğini (yani ne zaman gönderileceğini SIGTERMve göndermeden önce ne kadar bekleyeceğini SIGKILL, vb.) Yapılandırmakta daha iyi olduğunu düşünüyorum .
Atılım
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.