Cron Vs Anacron: Linux'ta Anacron Kullanarak İşler Nasıl Planlanır


Bu yazıda cron ve anacron'u açıklayacağız ve ayrıca Linux'ta anacron'un nasıl kurulacağını da göstereceğiz. Ayrıca bu iki yardımcı programın karşılaştırmasını da ele alacağız.

Bir görevi belirli bir zamanda veya daha sonraki bir zamanda planlamak için 'at' veya 'batch' komutlarını kullanabilirsiniz ve komutları tekrar tekrar çalışacak şekilde ayarlamak için toplu komutlarını kullanabilirsiniz. güçlü>cron ve anacron olanakları.

Cron – sistem yedeklemeleri, güncellemeler ve çok daha fazlası gibi zamanlanmış görevleri çalıştırmak için kullanılan bir arka plan programıdır. Sunucular gibi 7/24 sürekli çalışacak makinelerde zamanlanmış görevlerin çalıştırılması için uygundur.

Komutlar/görevler, crontab dosyalarında zamanlanan cron işlerine yazılmıştır. Varsayılan sistem crontab dosyası /etc/crontab'dır, ancak her kullanıcı aynı zamanda kullanıcının tanımladığı zamanlarda komutları başlatabilen kendi crontab dosyasını da oluşturabilir.

Kişisel bir crontab dosyası oluşturmak için aşağıdakini yazmanız yeterlidir:

crontab -e

Linux'ta Anacron Nasıl Kurulur

Anacron, komutları gün olarak tanımlanan sıklıkta periyodik olarak çalıştırmak için kullanılır. Cron'dan biraz farklı çalışır; makinenin her zaman açık olmayacağını varsayar.

Normalde cron tarafından yürütülen günlük, haftalık ve aylık planlı işlerin, dizüstü ve masaüstü makineler gibi 7-24 çalışmayacak makinelerde çalıştırılması için uygundur.

Her gece yarısı, muhtemelen siz uykudayken cron kullanılarak çalıştırılacak zamanlanmış bir göreviniz (yedekleme komut dosyası gibi) olduğunu ve o sırada masaüstü/dizüstü bilgisayarınızın kapalı olduğunu varsayalım. Yedekleme komut dosyanız yürütülmeyecek.

Ancak anacron kullanıyorsanız, masaüstü/dizüstü bilgisayarınızı bir sonraki açışınızda yedekleme komut dosyasının yürütüleceğinden emin olabilirsiniz.

Anacron Linux'ta Nasıl Çalışır?

anacron işleri /etc/anacrontab dosyasında listelenir ve işler aşağıdaki format kullanılarak planlanabilir (anacrontab dosyası içindeki yorumlar # ile başlamalıdır).

period   delay   job-identifier   command

Yukarıdaki formattan:

  • dönem – bu, gün cinsinden veya günde, haftada veya ayda bir kez @daily, @weekly veya @monthly olarak belirtilen iş yürütme sıklığıdır. Ayrıca sayıları da kullanabilirsiniz: 1 - günlük, 7 - haftalık, 30 - aylık ve N - gün sayısı.
  • gecikme – bir işi gerçekleştirmeden önce beklenecek dakika sayısıdır.
  • iş kimliği – günlük dosyalarına yazılan işin ayırt edici adıdır.

Örnek dosyaları görüntülemek için şunu yazın:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • komut – yürütülecek komut veya kabuk komut dosyasıdır.
Pratikte olan budur:
  • Anacron, period alanında belirtilen süre içerisinde bir işin yapılıp yapılmadığını kontrol edecektir. Değilse, gecikme alanında belirtilen dakika kadar bekledikten sonra komut alanında belirtilen komutu çalıştırır.
  • İş yürütüldükten sonra, tarihi, iş kimliği (zaman damgası dosyası adı) alanında belirtilen adla /var/spool/anacron dizinindeki bir zaman damgası dosyasına kaydeder.

Şimdi bir örneğe bakalım. Bu, /home/aaronkilik/bin/backup.sh komut dosyasını her gün çalıştıracaktır:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

backup.sh işinin çalışması beklendiğinde makine kapalıysa, anacron, başka bir 7 gün beklemeye gerek kalmadan, makine açıldıktan 10 dakika sonra işi çalıştıracaktır.

Anacrontab dosyasında anlamanız gereken iki önemli değişken vardır:

  • START_HOURS_RANGE – bu, işlerin başlatılacağı zaman aralığını ayarlar (yani, işler yalnızca aşağıdaki saatlerde yürütülür).
  • RANDOM_DELAY – bu, bir işin kullanıcı tanımlı gecikmesine eklenen maksimum rastgele gecikmeyi tanımlar (varsayılan olarak 45'tir).

Anacrontab dosyanız muhtemelen bu şekilde görünecektir.

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

Aşağıda, bunlardan herhangi birinin ne zaman kullanılacağını anlamanıza yardımcı olacak cron ve anacron'un bir karşılaştırması yer almaktadır.

It’s a daemon

Bu bir şeytan değil

Appropriate for server machines

Masaüstü/dizüstü makineler için uygundur

Enables you to run scheduled jobs every minute

Yalnızca planlanmış işleri günlük olarak çalıştırmanıza olanak tanır

Doesn’t executed a scheduled job when the machine if off

Programlanmış bir işin zamanı geldiğinde makine kapalıysa, makine bir sonraki açıldığında programlanmış bir işi yürütecektir.

Can be used by both normal users and root

Aksi belirtilmedikçe yalnızca root tarafından kullanılabilir (belirli yapılandırmalara sahip normal kullanıcılar için etkindir)

Cron ve anacron arasındaki en büyük fark, anacron amaçlanırken cron'un sürekli çalışacak makinelerde etkili bir şekilde çalışmasıdır. bir gün veya hafta içinde kapatılacak makineler için.

Başka bir yol biliyorsanız, aşağıdaki yorum formunu kullanarak bizimle paylaşın.