FTC: Web sitemiz ziyaretçi desteklidir; İçeriklerde bulunan bağlantılar aracılığıyla ürün/hizmet satın aldığınızda komisyon kazanabiliriz. Komisyonlar editoryal değerlendirmelerimizi etkilemez.

Cron Job Nedir, Nasıl Oluşturulur?

Cron Job Nedir? Nasıl Çalışır?

Cron, Unix benzeri işletim sistemlerinde (OS) bir komut satırı yardımcı programı ve iş zamanlayıcıdır. Cron’da oluşturulan ve cron job adı verilen görevler, sabit zamanlarda, tarihlerde veya aralıklarla periyodik olarak çalışacak şekilde planlanır. Cron Job, veri yedekleme ve sunucu bakım görevleri için tercih edilen yaygın bir otomasyon taktiğidir. CronJob aynı zamanda internet dosyalarının ve e-postaların düzenli aralıklarla indirilmesinde de oldukça faydalıdır. Tekrarlayan veya tek seferlik görevlerde temel işlemleri basitleştirmek için cron job kullanılabilir.

Unix benzeri işletim sistemlerinde cron veya herhangi bir cron işi, crontab dosyası veya crontab yapılandırma dosyası adı verilen cron dosyasına dayalı olarak çalışır. Crontab dosyası, zamanlanmış komutları veya komut dosyalarını içeren bir metin dosyasıdır. Crontab dosyasının konumu /etc/crontab‘dır.

Sistem veya kullanıcı crontab dosyaları, temel cron job işlemleri için kullanılan iki tür yapılandırma dosyasıdır. Sistem yöneticileri genellikle cron dosyalarını düzenlerken Unix benzeri işletim sistemleri birden fazla kullanıcıyı destekler. Sonuç olarak kullanıcılar, ayrıcalık düzeylerine bağlı olarak her iki dosyayı da düzenleyebilir.

Yöneticiler sistem çapındaki görevleri zamanlamak için sistem crontab’ını kullanır. Bu önemli işler kök ayrıcalıkları gerektirir. Sistem yöneticileri, kullanıcı düzeyindeki görevleri zamanlamak için kullanıcı crontab’ını kullanır. Bu işler root erişimi gerektirmez ve çoğu kullanıcı tarafından oluşturulabilir veya düzenlenebilir.

Cron Job Kullanmanın Avantajları Nelerdir?

  • Temel verilerin planlanmış yedeklemelerini çalıştırma.
  • Geçici dosyaları ve günlükleri temizleme.
  • Otomatik e-posta veya bildirim gönderme.
  • Sistem yazılımını güncellemek için komut dosyalarını çalıştırma.
  • Üyelik sitelerinden süresi dolmuş hesapları devre dışı bırakmak veya silmek için işler yürütme.
  • Veritabanı tablolarını düzenli olarak güncelleme.
  • Önbelleğe alınan verileri düzenli aralıklarla silme.
  • Web sitenizin içeriğindeki bozuk bağlantıların düzenli e-postayla raporlanması.

Cron Job kullanmanın en önemli avantajlarından biri, sunucu kaynaklarının yüksek talebin daha az olduğu yoğun olmayan saatlerde görevleri zamanlamanıza izin vermesidir. Bu özellik kullanıcı etkisini en aza indirir ve sunucunuzun sorunsuz çalışmaya devam etmesini sağlar. Ayrıca görevleri cron işleriyle otomatikleştirerek insan hatası riskini azaltabilir ve işlerin tutarlı ve güvenilir bir şekilde tamamlanmasını sağlayabilirsiniz.

  • Cron Job için gereksinimler:
    • Linux çalıştıran bir sunucu.
    • Kullanıcı hesabınız için root veya sudo ayrıcalıkları.

Cron Söz Dizimi Örnekleri

Cron, çalıştırılacak komutların bir listesini bulmak için yapılandırma dosyalarına bakar. Crontab yapılandırma dosyasındaki satırları anlamak için arka plan programı benzersiz bir sözdizimi kullanır. Bir cron işi kurabilmek için öncelikle bu sözdizimini oluşturan temel parçaları anlamalısınız. Bir crontab satırı aşağıdaki formatta olmalıdır:

* * * * * /directory/command output
  • Yıldız işaretleri ( * * * * * ) cron işinin saatini, tarihini ve yinelenmesini belirtir.
  • /directory/command kısmı çalıştırılacak konumu ve betiği belirtir.
  • Output kısmı isteğe bağlıdır ve kullanıcının cron işi tamamlandığında nasıl bilgilendirileceğini tanımlar.

# Cron İş Saati, Tarihi ve Yinelenme Biçimlendirmesi:

Komutun ilk beş alanı, ne zaman ve ne sıklıkla çalışacağını tanımlayan sayılardır. Her konum farklı bir değeri temsil eder ve bir boşlukla ayrılır.

cronjob
  • 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ı

Aşağıdaki tablo, alanlara ilişkin potansiyel değerlerin yanı sıra örnek sözdizimini de özetlemektedir:

AlanPotansiyel DeğerlerSözdizimiTanım
1.* = Minute0 – 593 * * * * Dakika 3’tür, yani sistem saati saatten 3 dakika sonrayı gösterdiğinde iş başlatılır.
2. * = Hour0 – 230 3 * * *Saat 3’tür, yani iş sistem saati sabah 3’ü gösterdiğinde çalışır (öğleden sonra 3, 15 olarak kodlanmıştır).
3. * = Day of the month0 – 310 0 3 * * Ayın günü 3’tür, yani iş ayın 3’ünde çalıştırılır.
4. * = Month0 = yok ve 12 = Aralık0 0 0 3 *Sayısal ay 3’tür, yani iş yalnızca Mart ayında çalışır.
5. * = Day of the week0 = Pazar ve 7 = Pazar0 0 * * 3 Bu sözdiziminde 3, işin yalnızca Çarşamba günleri çalışacağı anlamına gelir.

# Cron Job command:

/directory/command kısmı yürütülen komutu belirtir. Cron işinin çalıştırılacağı betiğin tam dizinini ve dosya adını belirtir. İstediğiniz herhangi bir komutu veya betiği belirtebilirsiniz, ancak bu örnek kök dizine işaret eder ve o konumdan bir backup.sh betiğini çalıştırır.

/root/backup.sh

# Cron Job Output (İsteğe Bağlı):

Cron çalıştığında, crontab dosyasının sahibine otomatik olarak e-posta gönderir. Bu, görevleri yönetmenin pratik bir yöntemi olsa da, küçük rutin görevler, gelen kutunuzun hızla dolmasına neden olabilir. İsteğe bağlı çıktı e-postasını devre dışı bırakarak gelen kutusunun aşırı yüklenmesini önlersiniz. Çıkış e-postasını devre dışı bırakmak için cron işi özel dizelerini kullanabilirsiniz.

Cron sözdiziminde çıktının (output) olduğu zaman ve komut alanlarından sonra, e-posta çıktısını durdurmak için şu dizeyi ekleyin:

* * * * * directory/command >/dev/null 2>&1

Cron Job Oluşturma: Cron Job Nasıl Ayarlanır?

Adım 1: Crontab Dosyasına Erişin

Bir cron işi oluşturmaya başlamak için terminalden crontab dosyasına erişin. Aşağıdaki komutu kullanmak, dosyaya erişmenizi veya mevcut değilse bir tane oluşturmanızı sağlar.

crontab -e

Bu komut, kullanıcıların kendi seçtikleri metin düzenleyiciyi kullanarak cron işi eklemelerine, düzenlemelerine ve silmelerine olanak tanır. Dosyaya ilk kez eriştiğinizde cron job çıktılarının gönderileceği e-posta adresini eklemeniz ve onaylamanız istenir. Bu ekranı takiben kullanmak istediğiniz metin düzenleyiciyi seçmelisiniz.

2. Adım: Cron İşini Oluşturun

Daha önceki örneklerde belirtilen backup.sh betiğini koruyarak, crontab dosyasına girilecek örnek cron job komutları oluşturalım. Aşağıdaki cron işi her ay saat 2:00’de çalışır:

* 2 0 * * /root/backup.sh

İşte bazı ek cron sözdizimi örnekleri:

Aşağıdaki komut cron işini her dakika çalıştırır.

* * * * * /root/backup.sh

Bu komut cron işini her 30 dakikada bir çalıştırır.

30 * * * * /root/backup.sh

Bu komut cron işini her saat başı çalıştırır.

0 * * * */root/backup.sh

Bu komut cron işini her gün gece yarısı çalıştırır.

0 0 * * * /root/backup.sh

Bu komut cron işini her gün sabah saat 2:00’de çalıştırır.

0 2 * * * /root/backup.sh

Bu komut cron işini her ayın 1. gününde çalıştırır.

0 0 1 * * /root/backup.sh

Bu komut cron jobu her ayın 15. gününde çalıştırır.

0 0 15 * * /root/backup.sh

Bu komut cron işini 1 Aralık gece yarısında çalıştırır.

0 0 0 12 * /root/backup.sh

Bu komut cron işini Cumartesi günü gece yarısı çalıştırır.

0 0 * * 6 /root/backup.sh

Cron job planlarken bazı uygulamaları akılda tutmak faydalı olacaktır:

  • Aynı anda çok fazla cron işi çalıştırmayarak sunucunun aşırı yüklenmesini önleyin.
  • Cron işlerini yoğun olmayan saatlerde planlayarak kullanıcı etkisini en aza indirin.
  • Cron işleriniz için açıklayıcı adlar kullanarak görevin ne yaptığı konusunda net olun.

İşte sizin için 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

3. Adım: Cron İşini Doğrulayın

Cron job oluşturulduktan ve planlandıktan sonra, durumu kontrol etmek için aşağıdaki komutu çalıştırarak düzgün çalıştığını doğrulayın. Bu komut özellikle mevcut planlanmış tüm cron işlerini listeler:

crontab -l

İlgili diğer basit crontab komutları:

  • crontab -e — Crontab dosyasi bulunuyorsa düzenlemenizi, bulunmuyorsa yaratmasinizi saglar )bir crontab dosyası oluşturmak ve düzenlemek için kullanılır).
  • crontab -u username -e — Başka bir kullanıcının crontab dosyasını superaccess yetkisiyle düzenlemek için kullanılır.
  • crontab -l — Mevcut kullanıcıların crontab dosyası listelerini görüntüler.
  • crontab -u username -l — Başka kullanıcıların crontab dosyaları listelerini görüntüler.
  • crontab -r  — Crontab dosyasını siler.
  • crontab -v  — Crontab dosyasının en son düzenlendiği tarihi gösterir.

Cpanel Cronjob Oluşturma

Cpanel’e giriş yaptığınızda Cronjobs kısmında cron job oluşturmak için 2 farklı mod görürsünüz:

  1. Standart Mod– Özellikle yeni kullanıcılar için önerilir. Bu seçenek gerekli ayarların formdan seçilebilmesini sağladığından işlemin daha hızlı ve basit yapılabilmesini sağlar. Standart mod 12 saatlik biçemi kullanır, böylece kullanıcının istediği zamanı seçmesini kolaylastırır (AM= 0-12, PM= 12-23)
    • Standart Mod ile Cronjob Ekleme: Standart modda kullanıcıdan işlemin yapılacağı zamanı seçmesi, rapor gönderilecek mail adresi ve yapılacak işlemi girmesi istenir. Formun en üstündeki alana işlem gerçekleştiğinde ya da bir hata olustuğunda rapor gelmesi istenen adres girilir. Ardından yapılacak işlemin girilmesi gerekir. Buraya tüm unix komutları girilebilir. Örneğin: Bir klasörün tüm içeriğini silmek için: rm home/kullaniciadi/tmp/* komutu kullanılabilir. Bu komutta da oldugu gibi “*” karakteri cron tarafindan da desteklenmektedir. Bu komut “*” /tmp klasöründeki tüm dosyalari temsil ettiginden /tmp klasörünün tüm içerik silinecektir. Daha sonra işlemin yapılacağı tarih seçilir. Son olarak Kaydet (Save Crontab)‘e tıklanarak işlem tamamlanır.
  2. Gelişmiş Mod (UNIX Style) – Gelismis mod UNIX tarzi cronjob eklemeyi destekler.Profesyoneller için önerilen moddur.
    • Gelişmiş Mod ile Cronjob Ekleme: İlk kısma rapor iletilecek mail adresi eklenir. Ardından çalıştırılma zamanı için sırasıyla Dakika, Saat, Ayın günü, Ay ve Haftanın günü yazilir. Son olarak “Command” kısmına çalıştırılması istenilen komut girilerek “Commit Changes” butonuna tıklanır.

İsteğe Bağlı Cron Job Operatörleri

Operatörler, cron alanının sağladığı değerler üzerinde işlemler gerçekleştiren benzersiz karakterlerdir. Cron sözdizimi aynı zamanda verimlilik için operatörlerden de yararlanır.

İşte, Cron komutlarınızla kullanabileceğiniz birkaç operatör:

  • Bir değeri adımlara bölmek için eğik çizgi (/) kullanın. Örneğin, */2 her diğer değerdir, */3 her üç değerdir ve */10 her onda birdir, vb.
  • Bir değer aralığını belirtmek için kısa çizgi (-) kullanın.
  • Ayrı değerleri belirtmek için virgül (,) kullanın.
  • Tüm değerleri temsil etmek için yıldız işareti (*) kullanın. Bu operatör görevlerin her ay veya haftanın her günü devam etmesini sağlayabilir.
  • Ayın veya haftanın son gününü belirtmek için ayın günü ve haftanın günü alanlarında L (Last) harfini kullanın. Örneğin haftanın günü alanında 3L ayın son çarşambası anlamına gelir.
  • Belirli bir zamana en yakın hafta içi günü belirtmek için W (Weekday) harfini kullanın. Örneğin, ayın 1’i cumartesi gününe denk geldiğinde, ayın günü alanındaki 1W komutu bir sonraki Pazartesi günü çalıştırılır.
  • Haftanın belirli bir gününü belirtmek için bir hash (#) ve ardından 1’den 5’e kadar bir sayı kullanın. Örneğin 1#2 , ayın ikinci Pazartesi günü anlamına gelir.
  • Ayın günü ve haftanın günü alanlarına belirli bir değer girmek için soru işareti (?) kullanın.

Cron Job Özel Dizeleri

Cron job özel dizeleri, cron işi sözdiziminin bir parçasıdır ve kullanıcıların mantıksal sayı kümelerini girmeden iş sıklığını belirlemesine olanak tanır. Bu dizeler, standart sözdizimi ile aynı sonucu elde etmek için @ sembolünü ve bir tanımlayıcıyı kullanır.

En yaygın cron işi özel dizelerinden bazıları şunlardır:

  • @yearly or @annually: Komutu yılda bir kez 1 Ocak gece yarısında çalıştırır (Standart sayısal sözdizimi: 0 0 1 1 * ).
  • @monthly: Komutu ayda bir kez ayın ilk gününün gece yarısında çalıştırır (Standart sayısal sözdizimi: 0 0 1 * * ).
  • @weekly: Komutu haftada bir kez Pazar günü gece yarısı çalıştırır (Standart sayısal sözdizimi: 0 0 * * 0 ).
  • @daily or @midnight: Komutu günde bir kez gece yarısında çalıştırır (Standart sayısal sözdizimi: 0 0 * * * ).
  • @hourly: Komutu saatte bir, saatin başında çalıştırın (STandart sayısal sözdizimi: 0 * * * * ).

NOT: Tüm sistemlerin bu dizeleri desteklemediğini bilmenizde fayda var!

Cron işiniz olması gerektiği gibi çalışmıyorsa dikkat etmeniz gereken bazı temel noktalar şunlardır:

  • Cron işi sözdiziminin doğru olduğundan emin olun.
  • Kullanıcının komutu çalıştırmak için uygun izinlere sahip olduğundan emin olun.
  • Belirli bir cron işinin diğer sistem işlemleriyle veya cron işleriyle çakışmadığından emin olun.

Cron Job, VPS’nizde tekrarlanan görevleri otomatikleştirmek için kullanabileceğiniz güçlü bir araçtır. Bu adımları izleyerek cron işlerinizi oluşturabilir, planlayabilir ve doğrulayabilirsiniz.



Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu