Linux ortamında cron job hakkında temel bilgiler

Linux işletim sistemi kullanan sunucularda belirli aralıklarla çalışacak işlemler kurmak en sık kullanılan olaylardandır. Yapılan işlemlerin her birisine cron job, eylemlerin kaydedildiği dosya da crontab dosyası olarak anılır.

Öncelikle crontab editor nasıl değiştirilir, onu çalışalım. Linux sunucular genelde vi editörüyle ilişkilendiriyorlar crontab girme işini. Vi editörü çok iyi ve güçlü bir editör ama yeterince kullanıcı dostu değil. Nano ya da benzer bir editörle çalışmak rahat olacaktır. Sisteme super user olarak girdikten sonra crontab editörünü nano olarak ayarlamak için şu komutu kullanacağız;
export VISUAL="nano"

Şimdi de bir sunucuda kurulu cron job'ları nasıl listeleyeceğimize bakalım. Şu komut ile sunucuda kurulu tüm cron job'lar (ya da ilgili kullanıcıya örneğin root kullanıcısına ait cron job'lar) listelenir;
crontab -l
Eğer bir kullanıcıya ait cron job'ları görmek istersek şu komuttan faydalanabiliriz;
crontab -l -u kullanıcı-adı
Tüm kullanıcılara ait cron job'ları görmek için ise /var/spool/cron/* veya /etc/cron.*/* veya /etc/crontab yollarına bakmamız gerekir. İlgili Lünux dağıtımına göre bu yollar farklılık gösterebilir;
cat /var/spool/cron/*
cat /etc/cron.*/*
cat /etc/crontab


Login olduğumuz kullanıcı için bir cron job girmek istersek şu komutla girebiliriz;
crontab -e
Ya da root olarak login olduysak, özel bir kullanıcı için şu komutla cron job girebiliriz;
crontab -e -u kullanıcı-adı

Gelelim cron job kurmak istediğimizde zaman aralıklarını nasıl tespit edeceğimize. Bu kısım çok önemli. Cron job ayarlarında toplam 5 basamaklı bir gösterge vardır. Soldan sağa giderken;
  • 1. basamak, dakikayı,
  • 2. basamak, saati,
  • 3. basamak, ayın hangi günü olduğunu,
  • 4. basamak, hangi ay olduğunu,
  • 5. basamak, haftanın hangi günü olduğunu

gösterir.

Durumu sık kullanılan bazı örnek zamanlamalarla pekiştirelim. * işareti o veri alanının tüm elemanlarını içine alır.

Her gün saat 14:53'te, günde 1 kez çalışacak cron job zaman tanımlaması;
53 14 * * *
Her 5 dakikadar bir kez (saatte 12 kez) çalışacak cron job zaman tanımlaması;
*/5 * * * *
Her ayın ilk günü saat 18:30'da çalışacak cron job zaman tanımlaması;
30 18 1 * *
Her hafta haftanın 1. gününden 5. gününe kadar her gün (yani Pazartesi, Salı, Çarşamba, Perşembe, Cuma günleri) saat 22:00'de çalışacak cron job zaman tanımlaması;
0 22 * * 1-5
Her gün, saat 0'dan 20'ye kadar, 2 saatte bir saatin 23. dakikasında bir kez çalışacak cron job zaman tanımlaması;
23 0-20/2 * * *
Her Pazar günü saat 04:05'te 1 kez çalışacak cron job zaman tanımlaması;
5 4 * * sun ya da 5 4 * * 7
Her ayın 1. ve 15. günleri saat 05:14 ve saat 12:14'te birer kez, toplam iki kez çalışacak cron job zaman tanımlaması;
14 5,12 1,15 * *

Crontab dosyasında MAILTO parametresi ile, sunucunun cron job çalıştıktan sonra bildiriğim yapacağı e-posta adresini tanımlayabiliriz. Bu satırdan sonra listelenen cron job'lar ile ilgili bildirimler, o adrese yapılır. Örnek kullanım;
MAILTO="box@mail.dom"

Sık çalıştıracağımız cron job'lar PHP scriptleri olacaktır. Bu yüzden PHP scriptleri üzerinden bir kaç örnek cron job tanımı paylaşalım.

Dakikada bir kez çalışan, /opt/plesk/php/5.6/bin/php yolundaki php sürümünü motor olarak kullanarak (sunucuda birden fazla PHP sürümü olabilir) /var/www/vhosts/domain.dom/httpdocs/alt-dizin/ dizinindeki script.php dosyasını çalıştıran (execute eden) ve her çalıştırmada sonucunu box@mail.dom adresine e-posta olarak gönderen cron job tanımlası şu şekildedir;
MAILTO="box@mail.dom"
*/1 * * * * /opt/plesk/php/5.6/bin/php -f '/var/www/vhosts/domain.dom/httpdocs/alt-dizin/script.php'


Aynı işlemi aynı şekilde yapan, farklı olarak işlem sonucunu her çalıştırmada değil, sadece hata olduğunda e-posta olarak bildiren kurulum ise şöyle yapılır;
MAILTO="box@mail.dom"
*/1 * * * * /opt/plesk/php/5.6/bin/php -f '/var/www/vhosts/domain.dom/httpdocs/alt-dizin/script.php' > /dev/null


07.06.2020 Geni
1
daha iyi hizmet verebilmek için çerez (cookie) kullanıyoruz. detaylı bilgi için tıklayın