it-swarm-tr.com

Crontab kullanarak iş zamanlaması, bilgisayar bu süre içinde kapatıldığında ne olur?

Bazı görevleri crontab kullanarak planlıyorum.

Bilgisayarım cron'un bir şey yapmak üzere zamanlandığı sırada kapatılırsa veya kapatılırsa ne olur?

Kaçırılan her cron işi bilgisayar açıldıktan sonra mı çalışıyor yoksa o gün için kaçırılan işler yok sayılıyor mu? Kaçırılan işler devam etmezse, cron'u bilgisayar açıldıktan sonra kaçırılan görevleri çalıştıracak şekilde yapılandırmanın bir yolu var mı?

92
seg.server.fault

Bilgisayarınız kapatıldığında (veya cron arka plan programı çalışmıyorsa), cron işleri başlatılmaz.

Bilgisayarın kapalı olduğu zamanlarda gerçekte çalıştırmak istediğiniz işleriniz varsa, anacron kullanın. Varsayılan olarak yüklendiğinde, daha fazla bilgi için bkz. "Man anacron", "man anacrontab" veya/etc/anacrontab dosyası.

Ubuntu, crontab girişleri için varsayılan olarak anakron kullanır:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

kalan crontabları ana cron arka plan programı tarafından ele alınacak şekilde bırakmak, özellikle:

/etc/crontab
/etc/cron.d
/var/spool/cron

NOTLAR

Anacron'un kendisi bir daemon olarak çalışmaz, ancak sistem başlatma komut dosyalarına ve cron'un çalışmasına güvenir.

Baktığım Ubuntu 8.04 kutusunda, /etc/init.d/anacron önyüklemede ve yine her sabah 07: 30'da cron tarafından çalıştırılıyor.

README, sayfalarda bulunandan biraz daha fazla bilgiye sahiptir.

ÖRNEKLER

Basit "günlük", "haftalık", "aylık" işler için yukarıdaki /etc/cron.{daily|weekly|monthly} dizinlerinden birine komut dosyasının bir kopyasını veya bir sembolik bağ koyun. Anacron günlük/haftalık/aylık olarak çalıştırmaya özen gösterir ve bilgisayarınız "haftalık" komut dosyaları normal olarak çalışacağı gün kapalıysa, bilgisayarı bir sonraki açışınızda çalıştırır.

Başka bir örnek olarak, burada bir komut dosyanız olduğunu varsayarsak: /usr/local/sbin/maint.sh

Ve her üç günde bir çalıştırmak istiyorsanız,/etc/crontab'daki standart giriş şöyle görünecektir:

# m h dom mon dow user  command
0 0 */3 * * root /usr/local/sbin/maint.sh

Bilgisayarınız ayın 3'ünde 00: 00'da açık değilse, iş 6'ya kadar çalışmaz.

Bilgisayar kapalıyken işin 4'te çalışmasını ve 3'te çalışmayı "kaçırır", bunu/etc/anacrontab içinde kullanırsınız (/ etc/crontab'dan satırı kaldırmayı unutmayın):

# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh

Yukarıdaki "5" in "gecikmesi", anakronun bu işi yapmadan önce 5 dakika bekleyeceği anlamına gelir. Fikir, anacronun önyükleme sırasında hemen işleri kovmasını önlemektir.

76
jeff

Bu, hangi cron zamanlayıcıyı kullandığınıza bağlıdır. Temel Vanilya cron arka plan programı, sistem kapalı kalma süresi nedeniyle kaçırılan görevleri çalıştırmaz. Ancak, bu durum için özel olarak tasarlanmış ve sizin için yapacak başka cron zamanlayıcıları vardır. En yaygın iki örnek anacron ve fcron .

17
Tyler McHenry

Bilgisayar kapalıyken zamanlanan görevler, bilgisayar yeniden açıldığında çalışmaz

6
Alan H

Cron işleri çalışırken kapanırsanız, sistem kapanır ve cron işleri durur (veya çalışmaz).

Kontrol edebileceğiniz alternatiflerden biri anakron.

3
KPWINC

Gerçekten koştuğunuz cron deamon bağlıdır. Vixie-cron kaçırılan cronjobs'u atlayacak. fcron kaçırılan crons'ı mümkün olan en kısa sürede çalıştırır. IIRC de vixie-cron'a dayanıyor, bu yüzden aradığınız şey fcron'a bakmak isteyebilirsiniz.

3
gregf