Cron
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çin1-59/5 * * * *veya biçimini kullanın1,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:
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
Bağlantılar
- adam: cron - cron kılavuzu
- Adam: crontab(5) - crontab komutları için bir kılavuz
- cron ve at ile görev zamanlaması
- cron hakkında küçük SSS
- CRON ve crontab komutunu kullanma
- CRON hile sayfası
- PHP komut dosyalarını CRON kullanarak programa göre çalıştırma