Cron Job Nedir? Acemiler için Kapsamlı Rehber

Bir şeyleri yapmanın her zaman daha pratik yolu vardır. Tekrarlanan görevleri otomasyonlu biçimde halletmek birçok meşgul webmaster tarafından tercih edilmektedir. Unix gibi bir işletim sistemi kullanıyorsanız cron job görevleri otomatik yaparak size zamandan epey tasarruf ettirebilir.

Bu makalede cron job nedir, cron job temellerini ve görevleri planlamak için nasıl kullanacağınızı öğreneceksiniz.

Cron Job Nedir?

Cron bir görevi ilerleyen bir zamanda tekrarlamak için kullanılan bir programdır. Belirli bir görevi belirli bir zamanda tekrarlamak için komut verme eylemiyse bir cron job’dır.

Cron job nasıl çalışır?

Eğer bir görevi ilerleyen bir zamanda bir kereliğine planlamak istiyorsanız onun gibi başka bir komut kullanabilirsiniz. Ancak tekrarlanan görevler için cron harika bir çözümdür.

Cron bir daemon‘dır yani Cron interaktif olmayan görevleri yürütmek için arkaplanda çalışır. Windows’de Hizmetler gibi arkaplan işlemlerini mutlaka duymuşsunuzdur.

Bir daemon daima bekleme modundadır. Yani bu modda, bilgisayardaki veya ağdaki herhangi bir başka bir bilgisayardan belirli bir görevi yapmak için komut isteği bekler.

Bir cron dosyası belirli bir zamanda çalışacak komutları içeren basit bir metin dosyasıdır. Varsayılan crontab dosyasıysa /etc/crontab‘dır ve bir crontab dizininde /etc/cron.*/ konumlandırılmıştır. Sadece sistem yöneticileri crontab dosyasını düzenleyebilir.

Ancak Unix benzeri işletim sistemleri birden çok kullanıcıları desteklediğinden her biri kendi crontab dosyasını oluşturabilir ve istedikleri zaman görevlerin yapılması için komutları çalıştırabilirler. Bir cron daemon’ı dosyası kontrol edecek ve sistem arkaplanında komutu çalıştıracaktır.

Cron job’lar ile sistem bakımını otomatikleştirebilir, disk alanını izleyebilir ve yedekler planlayabilirsiniz. Doğasından dolayı cron job’lar 7/24 çalışan bir bilgisayar, yani bir sunucu için harikadır.

Unutmayın ki cron job’lar çoğunlukla sistem yöneticileri tarafından kullanılıyor olsalar da web geliştiriciler için de inanılmaz kullanışlılardır. Örneğin, süresi dolmuş bir hesabı etkisizleştirmek için kırık linkleri kontrol edebilir veya hedeflenen kullanıcılara bültenler bile yollayabilirsiniz.

Cron Job Temelleri

Birkaç farklı yöntem kullanarak cron job yaratabilir ve düzenleyebilirsiniz. Bu rehberde size Linux Shell Prompt (Terminal) yötemiyle nasıl yapılır göstereceğiz.

Eğer Hostinger’da VPS sunucusuna sahipseniz giriş bilgilerinizi VPS yönetim sekmenizde bulabilir ve sunucunuza SSH üzerinden erişebilirsiniz. Eğer bu konuda sorun yaşıyorsanız PuTTY SSH rehberimize göz atabilirsiniz.

İşte bazı cron job ile yapabileceğiniz bazı basit işlemler:

Eğer mevcut kullanıcının bir crontab dosyasını düzenlemek istiyorsanız terminalinizde crontab -e komutunu çalıştırın:

Cron Job komut satırı

Böyle bir sonuç elde edersiniz.

Cron Job crontab -e sonucu

vi editor kullanıldığından dolayı doğru işlemi yaptığınızdan emin olmak için temel vi komutlarını öğrenebilirsiniz.

Eğer başka bir kullanıcın crontab’ini düzenlemek istiyorsanız crontab -u username -e komutunu kullanabilirsiniz. Unutmayın ki bunu sadece bir superuser olarak yapabilirsiniz. Yani bunun için yukarıdaki komuttan önce sudo su yazmanız gerekmektedir.

Cron Job crontab -u username -e sonucu

Geçerli kullanıcı iken mevcut crontab dosyasını kaldırmak istiyorsanız  crontab -r  kodunu kullanabilirsiniz.

crontab -i kodu da ayı işlemi yapar ancak crontab’ı kaldırmadan önce kullanıcıya bir yes/no (Evet/Hayır) sorusu yöneltir.

Herhangi bir crontab dosyasının oluşturulup oluşturulmadığını da kontrol edebilirsiniz. Tek yapmanız gereken  crontab -l  komutunu girmektir. Eğer oluşturulmadıysa göreceğiniz sonuç budur.

Cron Job crontab -l sonucu

Ek olarak eğer diğer kullanıcıların crontab dosyası listelerini görmek istiyorsanız superuser olarak crontab -u username -l komutunu girebilirsiniz.

Cron Job crontab -u username -l sonucu

Temel işlemleri bilmenin dışında temel söz dizimini bilmek de önemlidir.

Basitçe, bir crontab dosyası iki kısımdan oluşur: planlama zamanlayıcı ve komut. İşte komut bu şekilde yazılır:

* * * * * /bin/sh backup.sh
  • ***** /bin/sh backup.sh cronjob’un dakikada bir yedek yaratacağı anlamına gelir.
  • 30 18 * * * rm /home/sydtesting/tmp/* ise tmp dosyalarını /home/sydtesting/tmp konumundan her gün 18.30’da silecektir.

Hadi biraz daha detaylara girelim.

Cron Söz Dizimi Nasıl Yazılır

Daha önce de belirttiğimiz gibi bir crontab dosyası tekrarlanacak bir görevin tarihini ve saatini belirlemek için beş alana sahiptir. Her alan bir yıldız işareti tarafından temsil edilir.

Crontab dosyasının beş alanı
  • Minute (Dakika) — komutun çalışacağı saatin dakikası 0-59 arası
  • Hour (Saat) — komutun hangi saatte çalışacağı 0-23 arası
  • Day of the month (Ay günü) — ayın hangi gününde komutun çalışacağı, 1-31 arası
  • Month (Ay) — komutun hangi ayda çalışacağı, 1-12 arası
  • Day of the week (Haftanın günü) — komutun haftanın hangi gününde çalışacağı, 0-7 arası

Buna ek olarak her crontab dosyasında doğru karakterleri kullanmanız gerekir.

  • Yıldız işareti (*) — bütün planlama parametlerini tanımlamak için.
  • Virgül (,) — tek bir komutun iki ya da daha fazla kere çalıştırılmasını sürdürmek için.
  • Tire (-) — tek bir komutun çalıştırılma sayısını ayarlarken zaman aralığını belirlemek için.
  • Bölme işareti (/) — belirli bir aralıkta önceden belirlenmiş sıklığı oluşturmak için.
  • Last (Son) (L) — belirli bir aydaki haftanın son gününü belirlemek içindir. Örneğin, 3L son çarşamba anlamına gelir.
  • Weekday (Hafta içi) (W) — belirlenen bir zamana en yakın hafta içi gününü belirlemek için. Örneğin, eğer 1W birincinin Cumartesi olduğu anlamına geliyorsa komut Pazartesi gününde çalışacaktır (3.)
  • Hash (#) — 1-5 arasından bir rakamdan sonra gelir ve haftanın gününü belirler. Örneğin 1#2 ikinci Pazartesi anlamına gelir.
  • Soru işareti (?) — boşluk bırakmak için.

12 Cron Söz Dizimi Örneği

Cron söz dizimini düzgün biçimde yazmayı öğrendiğinize göre yukarıda belirtiğimiz kuralları daha iyi anlamanız için size bazı örnekler sunacağız.

İlerlemeden önce komutun sonucunun otomatik olarak yerel e-posta hesabınıza yollanacağını unutmayın. Eğer bu e-postaları almak istemiyorsanız söz dizimine aşağıdaki gibi >/dev/null 2>&1 ekleyebilirsiniz:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Bunun dışında, eğer e-posta sonucunu belirli bir hesaba yollamak istiyorsanız e-posta adresinden MAILTO ekleyebilirsiniz. İşte bir örnek:

MAILTO="adim@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1

İşte daha fazla söz dizimi örneği:

Söz dizimiAnlamı
0 0 * * * /bin/sh backup.shHer gece yarısı veritabanı yedeği almak için
0 6,18 * * * /bin/sh backup.shGünde iki defa 06:00 ve 18:00 saatlerinde veritabanı yedeği almak için
0 */6 * * * /scripts/monitor.shHer altı saatte bir takip etmek için
*/10 * * * * /home/user/script.shHer 10 dakikada bir ana dizindeki script dosyası için bir cron job uygulamak için
0 * 20 7 * /bin/sh backup.shHer Temmuz 20 tarihinde saatlik yedek almak için
0 0 * * 2 * /bin/shHer Salı günü gece yarısında veritabanı yedeği almak için
* * * 1,2,5 *  /script/script.shOcak, Şubat ve Mayıs aylarında bir komut çalıştırmak için
10-59/5 5 * * * /home/user/script.shSaat 05:00’de 05:10’dan başlamak üzere her 5 dakikada bir komut çalıştırmak için
0 8 1 */3 * /home/user/script.shÜç ayda bir ilk günde saat 08:00’de bir komut çalıştırmak için
* * * * * /scripts/script.sh; /scripts/scrit2.shTek bir cron job’da birden çok görev çalıştırmak için planlama belirleme
@reboot /scripts/script.shSistemi her başlattığınızda belirli bir görev yapmak için
0 0 1 * * /home/user/script.shHer ayın ilk günü bir görev çalıştırmak için

Cron İzinleri

Konu Cron job olduğunda iki dosta önemli rol oynar.

  • /etc/cron.allow – Şayet cron.allow mevcutsa, kullanıcının cron job kullanabilmesi için kullanıcı adını içermesi gerekir.
  • /etc/cron.deny – Şayet cron.allow dosyası yoksa ama cron.deny dosyası varsa, o zaman kullanıcı cron.deny dosyasında olmamalıdır.

Sonuç

Otomatik olarak planlanan bir görev oluşturmak hem pratik olacak hem de zamanında yapılacak eylemi unutmamanızı sağlayacaktır.

Cron Job, hem sistem yöneticileri, hem de web geliştirici gibiler için görevleri yönetmek için harikadır. Tek yapmanız gereken doğru komutu kullanmak ve doğru zamanı seçmektir.

İşte bazı basit komutlar:

  • crontab -e — bir crontab dosyası oluşturmak ve düzenlemek için
  • crontab -u username -e — başka bir kullanıcının crontab dosyasını superaccess yetkisiyle düzenlemek için
  • crontab -l — mevcut kullanıcıların crontab dosyası listelerini görüntülemek için
  • crontab -u username -l — başka kullanıcıların crontab dosyaları listelerini görüntülemek için

Cron Job nedir öğrendiğinize göre artık istediğiniz zaman otomasyonun sizin için çalışmasını sağlayabilirsiniz! Düşüncelerinizi ve yorumlarınızı aşağıdaki yorumlar kısmında bizimle paylaşmayı unutmayın!

İyi şanslar!

Author
Yazar

Gökhan O.

Gökhan Hostinger’da YouTube Takım Lideri olarak çalışmakta. WordPress hakkındaki tecrübe ve bilgisini bu blogda paylaşıyor. Hostinger’ın adını YouTube içeriği üzerinden duyurmayı kendine görev edinmiştir. Hobileri arasında oyun oynamak ve futbol maçları izlemek vardır.