Sık karşılaşılan işler için cron ve sistem tarafından yönetilen hizmeti kullanma


0

Eğer bazı görevler sıklıkla fakat gerekli olmayan bir şekilde yapılmalıysa , bir döngü betiği ile bir cronhizmeti kullanmanın (sadece yönetilen upstartgibi) kullanmanın faydaları nelerdir?

#!/bin/sh
while true
do
    do_task
    sleep 3600
done

?

Bugünün komutuyla upstartkullanıcıyı seçebiliriz setuidve upstart, eğer ölürse betiği yeniden başlatmak, istenirse durdurmak vb. İçin yapılandırılabilir.

Bu durumda cron ile uğraşmanın gerçek bir faydası var mı?

Yanıtlar:


1

Cron'dan koşmak "temiz". Başlangıç ​​için daha az kaynak alacak - betiğiniz fazladan kaynak tüketecek (kabuk, zamanlayıcı ve fazladan Süreçler ve dosya tanımlayıcıları akla gelen bellek). Pratik olarak makineler delicesine güçlü olsa da, sadece daha az zarif.

Cron ayrıca stdout -> e-postayı veya neyin varsa, hata ayıklama için yararlı olabilecek düzgün bir yol kullanır.

Cron kullanıyorsanız, farklı ayrıcalıklarla uğraşmanıza gerek kalmaz, sadece hangi kullanıcıya kullanacağını cron'a söyleyin.

Elbette, start-up kullanmanın bazı avantajları vardır - örneğin, beklemeler arasında bir dereceye kadar rastlantısallık derecesi veya Cron'un sevmediği bir işlem programı isteyebilirsiniz. Bunun gibi bir çözümün Cron'dan daha iyi olduğu zamanlar vardır - ama onların köşe davaları olduğunu düşünüyorum.

İşlemi başlatmak ve durdurmak ve kullanıcı kontrolüne sahip olmak istiyorsanız, örneğin, Upstart daha iyi bir yol olabilir.


0

cron, bir işlemin kesin bir mutlak zamanda (yani her gün saat 15: 15'te X: 05'te veya her saatte bir saatinde) yürütülmesini istediğinizde, senaryonuz başladığınız zamana bağlı olarak kullanılır. Örnekte, başlattığınız andan itibaren her saat başı çalışacaktır; bu, önyükleme sırasına uygun olmalıdır. Böylece PC'niz 1: 05'te önyüklenirse işinizi her X: 05'te yapacaksınız, 3: 36'da önyükleme yapacaksanız işlerinizi X: 36'da yapacaksınız.

Sadece yaklaşık olarak saatte bir kez yapılmasını istiyorsanız, o zaman gerçekten değişmez, ama elbette, botun durumuna bağlı olarak bir saatin ilk ve son dakikası arasında herhangi bir yerde de olabilir. Aslında do_task'ınız çok uzun süren bir şeyse, saatte bir defadan daha az sıklıkla çalışabilir (uyku görev görevin sonunda hesaplandığından, do_task 30 dakika sürerse, do_task her 1 : Senin durumunda 30 saat)

Diğer taraftan, sisteminiz her zaman etkin değilse, cron kullanarak, bazı olayları kolayca kaybedebilirsiniz (çünkü bunlar tam olarak doğru olduğunda yapılır). Bu durumda, anakron daha önerilmektedir (çünkü son yürütme zamanına bakmaktadır). Başka bir şey, cron'un önceki istance henüz bitmemiş olsa bile işi yürüteceğidir, ki bu bazı durumlarda senaryonuz bitmeyecekken iyi veya kötü bir şey olabilir.

Kısaca şöyle dedi: Kesin bir zamana ihtiyacınız varsa ve zaman cronunun genellikle daha iyi olduğunu bilmeniz durumunda, belirli zamanlamaları olmayan sadece periyodik bir işe ihtiyacınız varsa, başlangıç ​​için başlayabilirsiniz.

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.