close

Cron

Navigasyona git Aramaya git

cron , belirli bir zamanda periyodik olarak işleri çalıştırmak için kullanılan  klasik bir arka plan programıdır ( UNIX  sınıfı  sistemlerde bilgisayar programı  )  . Düzenli eylemler, crontab dosyalarına ve özel dizinlere yerleştirilen talimatlarla açıklanır .

Cron adı , Yunanca χρόνος (hrόnos) - zaman (İngilizce - chronos ) kelimesinden türetilmiştir. Cron geliştiricisi Ken Thompson , Brian Kernighan ile yaptığı özel bir görüşmede bunu doğruladı .   .

systemd tabanlı sistemlerde, cron aslında yerleşik systemd.timer mekanizması ile değiştirildi.

Bireysel kullanıcılar için oluşturulan Crontab dosyaları [1] /usr/spool/cron/crontabs/ veya /var/spool/cron/tabs/ dizininde bulunur . Bunları manuel olarak düzenlemeniz önerilmez, bunun için komut kullanılır crontab -e. Tüm sistemi yönetmek için kullanılan crontab dosyaları /etc/cron.d/ dizininde bulunur . Ek olarak /etc/cron.daily/ , /etc/cron.weekly/ ve /etc/cron.monthly/ dizinleri otomatik olarak (günlük, haftalık veya aylık) çalışan programlar içerir.

Ana cron yapılandırma dosyası /etc/crontab, şuna benzer:

# /etc/crontab: sistem çapında crontab 
# Diğer crontab'lardan farklı olarak, bu dosyayı 
# ve /etc/cron.d içindeki dosyaları düzenlediğinizde yeni sürümü yüklemek için `crontab' # komutunu çalıştırmanız gerekmez. 
Bu dosyalar ayrıca , diğer crontab'ların hiçbirinin yapmadığı # kullanıcı adı alanlarına sahiptir .


KABUK = /bin/sh
 YOL = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# mh dom mon dow kullanıcı komutu 
 17 * * * * root    cd / && run-parts --report /etc/cron.hourly
  25  6   * * * root    testi -x /usr/sbin/anacron ||  (  cd / && run-parts --report /etc/cron.daily ) 
 47  6   * *    7   kök    testi -x /usr/sbin/anacron ||  (  cd / && run-parts --report /etc/cron.weekly ) 
 52  6   1    * * kök    testi -x /usr/sbin/anacron ||  (  cd / && run-parts --report /etc/cron.monthly ) 
#

crontab

Sistemin her kullanıcısının , bu kullanıcı adına hangi programların ne zaman ve ne zaman çalıştırılacağını açıklayan crontab tarafından ayarlanmış kendi dosyası vardır . Crontab dosyasını düzenlemek için , düzenleme sırasında cron işlemini kesintiye uğratmamanızı sağlayan aynı adlı özel bir crontab programı kullanılır .

Geçerli zamanlama dosyasının içeriğini görüntüleyin:

crontab -l

Geçerli zamanlama dosyasını silme:

crontab -r

Kullanıcınızın crontab dosyasını düzenlemek için [2] komutunu kullanın.

crontab -e

crontab tablosu boşluk veya sekmelerle ayrılmış 6 sütundan oluşur . İlk beş sütun yürütme süresini ( dakika , saat , gün , ay , haftanın günü ) belirler, bunlar bir sayı, virgülle ayrılmış bir sayı listesi, tire ile ayrılmış bir sayı aralığı, semboller *veya /. Sistem crontab dosyalarında zaman alanlarından sonra komutun çalıştırıldığı kullanıcı belirtilir. Dizedeki diğer tüm karakterler, parametreleriyle birlikte yürütülebilir bir komut olarak yorumlanır. Komut standart çıktıya bir metin gönderirse, bu metin kullanıcının e-postasına gönderilir .

* * * * * yürütme komutu
- - - - -
| | | | |
| | | | ----- haftanın günü (0-7) (Pazar = 0 veya 7)
| | | ------- ay (1-12)
| | --------- ayın günü (1-31)
| ----------- saat (0-23)
------------- dakika (0-59)

Örnek bir crontab dosyası :

 # yorum her zamanki gibi '#' ile başlar # /bin/sh'yi 
 kabuk olarak kullan 
 SHELL = /bin/sh
  # sonuçları bu adrese gönder 
 MAILTO = [email protected]
  # kullanıcının ana dizinini 
 PATH PATH'e ekle = /bin:/ usr/bin:/home/paul/bin
 
 #### İşler burada başlar 
 # her gün 0 saat 5 dakikada yürütülür, sonucu log/daily'e ekleyin 
 5  0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 
 # her ayın 1'i 14:15'te yürütülür 15 
 14  1  * * $HOME /bin/aylık
  # hafta içi her gün 22:00'de 
 0  22 * ​​* 1 -5 echo  "Eve gitme zamanı"  | mail -s "Saat 22:00" john
 
 23 */2 * * * echo  "0:23, 2:23, 4:23, vb.'de çalışıyor." 
 5  4 * * sun echo  "Pazar günü sabah 4:05'te koşuyoruz" 
 0  0  1  1 * echo  "Mutlu Yıllar!" 
 15  10 .13 * * 1 .4 echo  "Bu mesaj Pazartesi ve Perşembe günleri 10:15 ve 13:15'te görüntülenir" 
 0 -59 * * * * echo  "Her dakika çalıştırın" 
 0 -59/2 * * * * echo  " Çift dakikalarda çalışır" 
 1 -59/2 * * * * echo  "Tek dakikalarda çalışır" 
 # 5 dakikada bir 
 */5 * * * * echo  "Beş dakika geçti" 
 # her ayın ilk Pazar günü. -eq 7 haftanın günü kodudur, yani 1 -> Pazartesi , 2 -> Salı vb. 
 0  1  1 -7 * * [  " $( date '+\%u' ) " -eq 7  ]  &&  echo  " Bu etiket her ayın ilk Pazar günü saat 1:00'de görüntülenir"

Özellikler

  • Tüm koşullar (başlangıç ​​zamanı), "haftanın günü" ve "ayın günü" koşulları dışında "mantıksal VE" ile kontrol edilir - birlikte belirtilirler, "mantıksal VEYA" ile işlenirler, yani "herhangi bir belgelerine yansıyan günlerin sayısı" ( Ubuntu, Debian, FreeBSD). Ancak bu mantık açık değildir ve "her ayın ilk Pazartesi günü" veya "her Cuma 13'ünde" gibi bir koşul oluşturmanıza izin vermez. Geliştiriciler bu davranışı standart olarak kabul ederek değiştirmezler. [3]
  • Tüm crontab dosyaları boş bir satırla bitmelidir, aksi takdirde son kural veya tüm dosya yok sayılır.
  • crontab dosyasındaki komutlar standart kabuk sözdizimini kullanır, ancak birden çok satıra bölünemezler.
  • /etc/cron.daily/ gibi otomatik olarak taranan dizinlerdeki yürütülebilir dosyalar, adlarında nokta varsa yoksayılır.
  • Birkaç dakikada bir ofsetle çalışmak için kullanılan crontab sözdizimi , beklenmeyen sonuçlara yol açabilir. Bu nedenle, kayıt 1-56/5 * * * *her saatin 1. dakikasında tetiklenmeyecektir; "Saatin 1. dakikasından itibaren her 5 dakikada bir" tetiklemek için 1-59/5 * * * *veya biçimini kullanın 1,6,11,16,21,26,31,36,41,46,51,56 * * * *.
  • Çalıştır komutundaki bir karakter %, komuta yeni bir satır iletmek için kullanılır (eğer kaçmamışsa). Bunu izleyen komut metni, çalıştırılan programa komut satırı parametreleri olarak değil, standart girdi yoluyla iletilir .
  • Başlatılan komutların çıktısı, adına başlatmanın gerçekleştirildiği kullanıcıya gönderilir. Yönerge, komuttan önce crontab dosyasında bulunuyorsa MAILTO=<new@email>, çıktı verileri belirtilen adrese gönderilecektir.

Grafiksel kullanıcı arayüzü

Kullanıcıların rahatlığı için, birçok sistem cron'u yönetmek için özel GUI programlarına sahiptir .

Gnome Programı

Debian tabanlı dağıtımlar için:

  • Kurulum:sudo apt-get install gnome-schedule
  • Çalıştır: Uygulamalar → Sistem araçları → Program [1]

kcron

Kcron , cron yapılandırma dosyalarını düzenlemek için bir KDE arabirimidir . Yardımcı program Alt+F2 tarafından başlatılır , düzenleme penceresinde fare ile belirtebilirsiniz:

  • programın yürütülebilir dosyasının tam yolu
  • programı başlatmak için doğru zaman
  • program yürütme sırasında ihtiyaç duyulan ortam değişkenleri

Benzer programlar

  • NnCron , Windows  için bir zamanlayıcıdır.
  • Görev Zamanlayıcı  - Windows Görev Zamanlayıcı ve konsol yardımcı programıschtasks.exe.
  • at  - programları belirli bir zamanda çalıştırın.
  • anacron  - programların periyodik olarak başlatılması, tam olarak belirtilen zamanda olması gerekmez: örneğin, makine görevde belirtilen zamanda kapatılmışsa,anacrongörevi daha sonra yürütür.
  • inetd  - ağ isteği hizmeti programlarını çalıştırın.
  • upstart  - olay hizmeti programlarını başlat ( cron, atd, anacron, inetd'nin bir genellemesi ).

Notlar

  1. Man cron 28 Mayıs 2007 tarihinde Wayback Machine sitesinde arşivlendi .
  2. Cron Howto 15 Mayıs 2011 tarihinde Wayback Machine sitesinde arşivlendi .
  3. Debian Sorun İzleyici Tartışması 11 Nisan 2018 tarihinde Wayback Machine sitesinde arşivlendi .

Bağlantılar