Crontab kullanarak iş planlaması, bu süre zarfında bilgisayar kapatıldığında ne olacak?


85

Crontab kullanarak bazı görevleri zamanlarım.

Bilgisayarım kapatılırsa veya cron'un bir şeyler yapması planlandığı sırada kapanı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? Eğer cevapsız işler devam etmezse, bilgisayar yeniden açıldıktan sonra cron'u cevapsız işleri yapacak şekilde yapılandırmanın bir yolu var mı?


3
Web'de anakron öğretici aramaya çalıştım, ancak iyi olanları bulamadım. Man sayfalarına bakmak da bana pek yardımcı olmadı. Mevcut crontab'ı nasıl değiştirebilirim ki anakron olarak değiştirilsin mi? Ya da bu konuda herhangi bir öğretici çok yararlı olacaktır
seg.server.fault

1
Bazı örnekler eklemek için cevabımı düzenledim. Umarım bu yardımcı olur!
jeff

Yanıtlar:


70

Bilgisayarınız kapalıyken (veya cron arka plan programı çalışmıyorsa), cron işleri başlatılmaz.

Bilgisayar kapalıyken bu zamanlarda gerçekte çalıştırmak istediğiniz işleriniz varsa, anacron kullanın. Varsayılan olarak, daha fazla bilgi için "man anacron", "man anacrontab" veya / etc / anacrontab dosyasına bakın.

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

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

Kalan crontab'ları özellikle ana cron cini tarafından idare edilecek şekilde bırakmak:

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

NOTLAR

Anacron'un kendisi daemon olarak çalışmaz, ancak sistem başlatma komut dosyalarına ve çalıştırmak için cron'a dayanır.

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

/Usr/share/doc/anacron/README.gz adresindeki README, man sayfalarında bulunandan biraz daha fazla bilgiye sahiptir.

ÖRNEKLER

Basit "günlük", "haftalık", "aylık" işler için, yukarıdaki /etc/cron. Anacron günlük / haftalık / aylık olarak çalıştırmayı önemser ve eğer bilgisayar kapalıysa, "haftalık" betikler normal olarak çalışırsa, bilgisayarın bir sonraki açılışında onları çalıştırır.

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

Her üç günde bir çalıştırmak istiyorsanız, / etc / crontab içindeki standart giriş şöyle görünür:

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

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

Bunun yerine, bilgisayar kapalıyken 4. sırayı çalıştırmak ve 3. sırayı "kaçırmak" için, / etc / anacrontab dizinini kullanırsınız (/ etc / crontab dizininden 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. Buradaki fikir, anakronun önyükleme anında hemen eşyaları kovmasını önlemektir.


5
Varsayılan olarak Ubuntu bir anakron kullanır.
3dinfluence,

1
teşekkürler, varsayılan ubuntu setipinde hangi crontab'ların anakron tarafından işlendiğini gösteren 3dincluence ayarlanmış cevap.
jeff

2
Senaryoyu kendi crontab girişine değil /etc/cron.*/ dizinine koyarsanız, "" yazmayın. komut dosyasının dosya adında. debian ve ubuntu bu tür komut dosyalarını çalıştırmak için çalışma bölümlerini kullanır ve varsayılan olarak çalışma bölümleri a ile dosyaları yoksayar. dosya adında - bu, yükseltmelerden yeniden adlandırılan komut dosyalarının .dpkg-old ve .dpkg-dist sürümlerini çalıştırmayacak şekildedir. bu yüzden komut dosyasını veya "maint.sh" yerine "maint" sembolünü kullanın.
Cas

OpenSUSE, varsayılan olarak 11.2'den itibaren varsayılan olarak cronie kullanır (şu anda Tumbleweed / Leap 42.2'ye kadar). Kullanmak anacroniçin cronie-anacronpaketi yükleyin .
palswim

13

Bu, hangi cron zamanlayıcısını kullandığınıza bağlıdır. Temel vanilya cron cini, sistemin kapalı kalma süresi nedeniyle kaçırılan görevleri yerine getirmez. Ancak, bu durum için özel olarak tasarlanmış, sizin için bunu yapacak başka cron zamanlayıcıları vardır. En yaygın iki örnekleridir anacron ve fcron .


5

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


2

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

Kontrol edebileceğiniz alternatiflerden biri anakrondur.


2

Gerçekten koştuğun cron deam'ine bağlı. Vixie-cron sadece kaçırılan cronjobs atlayacak. fcron mümkün olan en kısa sürede kaçırılan parçaları çalıştıracak. IIRC vixie-cron'a da dayanıyor, bu yüzden eğer aradığınız şey buysa fcron'u kontrol etmek isteyebilirsiniz.

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.