Cron ve anacron arasındaki ilişki hakkında karışık


19

Cron ve anacronun birlikte nasıl çalıştığına dair genel bir açıklama yapmak için boşuna çalışıyorum. Man sayfaları bu noktada benim için biraz derin bir dalış.

Kafam karıştı çünkü crontab'a görevler ekliyorum ve bu işe yarıyor, ama onları crontab'dan sildiğimde hala anacron altında çalışıyorlar. /Etc/cron.daily içindeki görevleri görüyorum, ama oraya nasıl ulaştıklarından emin değilim. cron her zaman sistemimde çalışıyor, ama anacron değil. Aslında, anacronun cron tarafından başlatıldığını görüyorum!

Temel olarak, görevlerin nasıl ekleneceği ve kaldırılacağı konusunda kullanıcı düzeyinde bir giriş istiyorum, çünkü crontab'ı açıkça düzenlemenizi söyleyen kolay googleable cevaplar tamamlanmadı. Bir öğretici bağlantısı iyi olur.

Yanıtlar:


19

Her ikisi de cronve anacronyinelenen görevlerin kullanıcı tarafından tanımlanan belirli bir zamana kadar yürütülmesini zamanlayabilen cinlerdir.

Arasındaki temel fark, cronve anacronönceki sistem sürekli olarak çalışan olduğunu varsayar. Sisteminiz kapalıysa ve bu süre içinde planlanmış bir işiniz varsa, iş asla yürütülmez.

Öte yandan anacron'anakronistik'tir ve 7 gün 24 saat çalışmayan sistemler için tasarlanmıştır. Çalışması anacroniçin, komutlarının en son ne zaman yürütüldüğünü öğrenmek için zaman damgalı dosyalar kullanır. Aynı dosyayı /etc/anacrontabolduğu gibi korur cron. Ayrıca, cron.dailyher gün anacron çalışır. Bu nedenle, anacrongünde sadece bir kez bir iş cronyürütebilir , ancak her dakika kadar sık ​​çalışabilir.

Gönderen man anacrontab:

Anacron yürütüldüğünde, normalde / etc / anacrontab olan bir yapılandırma dosyasından işlerin listesini okur (bkz. Anacrontab (5)). Bu dosya, Anacron'un kontrol ettiği işlerin listesini içerir. Her iş girişi gün olarak bir süre, dakika cinsinden bir gecikme, benzersiz bir iş tanımlayıcısı ve bir kabuk komutu belirtir.

Her iş için Anacron, bu işin son n günde gerçekleştirilip gerçekleştirilmediğini kontrol eder; burada n, o iş için belirtilen süredir. Değilse, Anacron, delay parametresi olarak belirtilen dakika sayısını bekledikten sonra işin shell komutunu çalıştırır.

Komut çıktıktan sonra, Anacron tarihi o iş için özel bir zaman damgası dosyasına kaydeder, böylece ne zaman tekrar yürütüleceğini bilebilir. Zaman hesaplamaları için yalnızca tarih kullanılır. Saat kullanılmıyor.

Bu, bir görevin günlük olarak çalışacak şekilde zamanlanması ve bilgisayarın bu süre içinde kapatılması durumunda, anacron çalıştırıldığında, görevin en son 24 saat önce çalıştırıldığını ve görevi doğru bir şekilde yürüttüğünü görebilir.

Örneğin, aşağıdakilerde aşağıdakileri belirtirseniz /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

ve script.shişin yürütülmesi gereken gün , sistem anacronçalışmazsa script.sh, sistem geri geldikten 15 dakika sonra yürütülür .

Birkaç Referans:


Teşekkürler, Dijital Okyanus öğretici sık sık olduğu gibi özellikle iyidir. Nasıl kaçırdığımdan emin değilim, bu yüzden bağlantıyı takdir ediyorum.
Organik Mermer

Teşekkürler. "Cron.daily anacron everyhour çalıştırır", adam "cron.daily günlük anacron çalıştırıyor" mu?
Tim

Bunun için teşekkürler. - Her anacronzaman açık sistemler oldukları için tüm VPS'lerimden kaldırıldım . (İlk başta oraya nasıl geldiğine dair bir fikrim yok, bunu duymamıştım.) crontabGirişlerim (günlük, haftalık, ...) şimdi hepsi beklenen zamanlarda çalışıyor.
Adambean
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.