cPanel’de Cron Job Nedir?

cron job nedir

Cron Job Nedir?

Cron Job nedir, Unix/Linux sistemlerinde belirli zamanlarda veya aralıklarla otomatik olarak çalıştırılan komut veya betik görevleridir. Örneğin her gece web sitenizin yedeğini almak, haftalık rapor göndermek ya da günlük log dosyalarını temizlemek için cron job kullanabilirsiniz. cPanel gibi hosting kontrol panellerinde Cron Job özelliği sayesinde bu görevleri grafiksel arayüzle kolayca yönetebilirsinizdocs.cpanel.net. Aşağıdaki örnekte bir terminal ekranında çalışan tipik bir betik görünümü yer alıyor (örneğin Python veya bash script). Bu tür betikler, cron job zamanlamasına göre sistem tarafından düzenli olarak yürütülür:

Cron job’lar, belirli saatlerde otomatik olarak çalışan görevlerdir. Bu görevler sayesinde örneğin her gün belirli bir PHP betiği çalıştırabilir, dosya yedekleme yapabilir veya veritabanı temizleme işlemi gerçekleştirebilirsiniz. Modern web hosting panellerinde bu işleri sırayla çalıştırmak için cron zamanlaması kullanılır.

Cron Job Kullanımına Örnek Senaryolar:

  • Web Sitesi Yedeği: Her gece 02:00’de sitenizin tam yedeğini almak.
  • Log Temizliği: Her ayın ilk günü bir yıldan eski log dosyalarını silmek.
  • E-posta Bildirimi: Aylık raporları otomatik olarak e-posta ile göndermek.

 

cPanel’de Cron Job Ekranına Ulaşmak

cPanel’e giriş yaptıktan sonra genellikle ana sayfanın “Gelişmiş” (Advanced) bölümünde “Cron Jobs” adıyla bir seçenek bulunur. Bu bağlantıya tıkladığınızda Cron Job yönetim ekranına erişirsiniz. Aşağıdaki görselde cPanel’in Cron Jobs arayüzü görülmektedir. Üst kısımda e-posta ayarları ve zamanlama seçenekleri, alt kısımda ise daha önce tanımlanmış görevlerin listesi yer alır:

cPanel arayüzünde Advanced (Gelişmiş) bölümünden Cron Jobs sayfasına ulaşabilirsiniz. Bu ekranda yeni görev tanımlamak için gerekli zamanlama alanları ve komut girişi formu bulunur. Alt kısımda daha önce oluşturduğunuz cron job’lar listelenir. Yeni bir görev eklemek için yukarıdaki bölümlerde belirtilen adımları izleyin.

Cron Job Ekranına Erişim Adımları:

  1. cPanel ana sayfasında Cron Jobs simgesini bulun ve tıklayın.
  2. Açılan sayfada üst tarafta Cron Email kutusuna bildirim almak istediğiniz e-posta adresinizi girin ve Update Email ile kaydedin. Bu adres, cron çıktıları için kullanılacaktır.
  3. Alt tarafta bulunan Add New Cron Job formunda, görev zamanlamasını belirleyin. Zamanlamayı elle girebileceğiniz gibi Common Settings (Yaygın Ayarlar) açılır menüsünden hazır seçenekler de seçebilirsiniz (ör. “Once Per Day”, “Once Per Week” vb.).
  4. Zamanlama alanlarını (dakika, saat, gün, ay, hafta) belirledikten sonra, çalıştırılacak komutu Command kutusuna tam yolu ile yazın (ör. bir PHP betiği veya shell komutu).
  5. Add New Cron Job düğmesine tıklayarak görevi kaydedin. Görev eklendikten sonra altında listede görünecektir.

 

Zamanlama Yapısının Mantığı

Cron zamanlaması beş alandan oluşur: Dakika, Saat, Ayın Günü, Ay ve Haftanın Günü. Her alana sayı, yıldız (*) veya özel semboller girilerek zamanlama tanımlanır. Örneğin * yıldızı her değeri temsil ederken */5 her 5 birimi ifade eder. - işareti aralık, , virgül ise bir liste demektir. Alanların anlamları ve alabileceği değer aralıkları şunlardır:

  • Dakika (Minute): 0-59 arasında bir değer. Örneğin 30 her saatin 30. dakikası. */15 her 15 dakikada bir (00, 15, 30, 45).
  • Saat (Hour): 0-23 arasında bir değer. 24 saat formatında; örneğin 0 gece yarısı, 14 öğleden sonra 2.
  • Ayın Günü (Day): 1-31 arasında bir değer. Ayın gününü belirtir.
  • Ay (Month): 1-12 arasında bir değer. Ocak=1’den Aralık=12’ye kadar ayları belirtir.
  • Haftanın Günü (Weekday): 0-7 arasında bir değer. Günleri belirtir; genellikle Pazar 0 (veya 7), Pazartesi 1, Salı 2, … olarak değerlendirilir.

Yıldız (*) kullanımı, o alanda her değeri kapsar. Örneğin * bir alanda “her dakika” veya “her ay” anlamına gelir. Aralık belirtmek için tire kullanılır (örn. 1-5 Pazartesiden Cumaya kadar), virgülle liste yapılır (örn. 1,15 ayın 1’i ve 15’i) ve bölü (/) ile adım belirtilebilir (örn. */2 her 2 birim).

 

Yaygın Kullanılan Cron İfadeleri

Aşağıda sık kullanılan bazı cron ifadeleri ve anlamları verilmiştir. Bu ifadeler [Dakika Saat Gün Ay Hafta] formatında yazılır:

  • * * * * * – Her dakika (düzenli aralıklarla her dakika çalışır).
  • */5 * * * * – Her 5 dakikada bir çalışır.
  • 0 * * * * – Her saatin başında çalışır (dakika 0).
  • 0 0 * * * – Her gün gece yarısı (00:00).
  • 30 2 * * * – Her gün 02:30’da çalışır.
  • 0 0 * * 1-5 – Pazartesi’den Cuma’ya her gün gece yarısı.
  • 0 12 * * 1 – Her Pazartesi saat 12:00’de.
  • 0 0 1 * * – Her ayın ilk günü gece yarısı.
  • 15 14 1 * * – Her ayın 1’inde 14:15’te.

Bu örnek ifadelerin hemen yanında açıklama yer alır. Örneğin 0 0 * * 1 ifadesi, her Pazartesi günü saat 00:00’da çalışmayı belirtir. Karmaşık zamanlamalar için geniş interval veya liste kombinasyonları kullanılabilir.

 

E-posta Bildirimi ve Çıktı Takibi

cron e-posta
cPanel Cron Jobs sayfasının üst kısmındaki Cron Email alanına bir e-posta adresi girerek, cron job’lar çalıştığında o adrese sonuç raporu alabilirsiniz. Çıktı (output) genellikle e-postanın gövdesinde gönderilir. İlk testlerde hata olup olmadığını görmeniz için e-posta bildirimi faydalıdır. Eğer bir cron job’un çıktısını almak istemiyorsanız, komutunuzun sonuna >/dev/null 2>&1 ekleyerek tüm çıktıyı ve hataları /dev/null‘a yönlendirebilirsiniz. Bu durumda cron işiniz çalışır ancak hiç e-posta gönderilmez. Örneğin:
				
					/usr/bin/php -q /home/kullanici/script.php >/dev/null 2>&1
				
			

şeklinde bir satır, eğer herhangi bir çıktıyı görmek istemiyorsanız kullanılır. Aksi halde hata veya başarı mesajları e-posta ile gelir.

Cron e-postalarını yönetmenin diğer bir yöntemi de çıktıyı bir dosyaya kaydetmek (ör. >> /home/kullanici/cron.log) ve periyodik olarak bu dosyayı kontrol etmektir. Ancak yeni başladığınızda hata ayıklamak için e-posta bırakmak genellikle daha pratiktir.

 

Örnek Cron Komutları

Aşağıda cron job ile yaygın olarak yapılan bazı işlemlere yönelik örnek komutlar verilmiştir:

cron örneği
cron örneği
  • PHP Betiği Çalıştırma: Bir PHP dosyasını zamanlanmış olarak çalıştırmak için PHP yorumlayıcının tam yolunu kullanabilirsiniz. Örneğin:
    /usr/bin/php -q /home/kullanici/public_html/script.php
    Bu komut, belirtilen PHP betiğini yorumlayıcı ile sessiz modda (-q) çalıştırır. PHP yorumlayıcının yolu sunucuya göre değişebilir; /usr/bin/php veya /usr/local/bin/php gibi farklı olabilir.
  • Yedekleme Betiği Çalıştırma: Dosya yedeklemek için tar veya özel bir script çalıştırabilirsiniz. Örneğin, bir klasörü sıkıştırarak yedekleme yapmak için:
    tar -czf /home/kullanici/backup-$(date +\%F).tar.gz /home/kullanici/public_html
    Bu komut, public_html klasörünü günlük tarih biçiminde isimlendirilen bir .tar.gz dosyasına yazar. Eğer özel bir yedekleme PHP betiğiniz varsa, onu da PHP yorumlayıcı veya wget/curl ile tetikleyebilirsiniz.
  • Veritabanı Temizliği: MySQL veritabanında eski kayıtları silmek için mysql komut satırı kullanılabilir. Örneğin:
    mysql -u kullanci -pparola -D veritabani -e "DELETE FROM logs WHERE created < DATE_SUB(NOW(), INTERVAL 30 DAY);"
    Bu örnekte -u kullanıcı adını, -p sonrası veritabanı parolasını, -D ise veritabanı adını belirtir. -e ile verilen SQL sorgusu çalıştırılır ve 30 günden eski log kayıtları temizlenir. (Not: Komut içinde parola yazmak yerine, güvenlik için ~/.my.cnf gibi dosyalarda kullanıcı bilgisi saklamak daha iyidir.)
  • Sunucu Komutları Çalıştırma: İhtiyaç halinde sistem komutları veya script’ler de cron ile tetiklenebilir. Örneğin bir backup script’inizi çalıştırmak için:
    /home/kullanici/scripts/backup.sh
    Böyle bir betik varsa, ona çalıştırma izni (chmod +x) verip tam yolunu yazmak yeterlidir. Yine de betik içinde gerekli yorumlayıcı satırını (#!/bin/bash gibi) kontrol edin.

 

Cron Job’ları Test Etme ve Hata Ayıklama

Cron job’larınızı oluşturduktan sonra, doğru çalışıp çalışmadıklarını test etmek önemlidir. İşte bazı ipuçları:

  • Manuel Test: Cron komutunuzu SSH üzerinden elle çalıştırarak test edin. Örneğin bash /path/to/script.sh veya php /path/to/script.php komutunun sorunsuz çalıştığından emin olun.
  • E-posta ve Log: Cron çalıştığında gönderilen e-postaları kontrol edin. Hata varsa burada görünür. Alternatif olarak komutunuzu bir log dosyasına yönlendirebilirsiniz:
    /usr/bin/php /home/kullanici/script.php >> /home/kullanici/cron.log 2>&1
    Bu satır çalıştırıldığında sonuçlar cron.log dosyasına yazılır. Hata çıktıları da (2>&1) log’a eklenir.
  • cPanel Araçları: cPanel’in Current Cron Jobs (mevcut cron görevleri) bölümünden tanımladığınız görevleri görebilir, düzenleyebilir veya silebilirsiniz. Hata mesajı alma için önce çıktıyı yönlendirmeyip e-posta almak yardımcı olur. Sorun düzeldikten sonra /dev/null 2>&1 ekleyebilirsiniz.
  • Zaman Dilimi ve Format: Sunucunuzun saat dilimini kontrol edin. Bazı durumlarda zaman farkı kaynaştırabilir. Komut satırlarında boşlukların ve karakterlerin doğru girildiğinden emin olun (örneğin özel karakterler için \ kaçış karakteri gerekebilir).
  • Çalışma Dizini: Cron, komutu kendi ortamında çalıştırır; dizin belirlenmemişse genellikle kullanıcı ana dizini kullanılır. Betiklerinizde yolları tam olarak yazın veya cd /path/to/project && ./script.sh gibi bir yapı kullanın.

Bu adımlarla cron job’larınızın doğru çalıştığından emin olabilir, ortaya çıkabilecek hata veya eksiklikleri kolayca tespit edip düzeltebilirsiniz.

 

Güvenlik ve Dikkat Edilmesi Gerekenler

Cron job ayarlarken şu noktalara dikkat edin:

  • Tam Yol Belirtin: Çalıştırılacak programların tam yolunu yazın (ör. /usr/bin/php, /usr/local/bin/mysqldump). Cron’un çalıştığı ortamda kısa yol veya PATH değişkeni olmayabilir.
  • Zararlı Komutlar: Özellikle rm -rf gibi silme komutlarını dikkatli kullanın. Yanlış dosya veya klasör silinmesini önlemek için gereken kontrol mekanizmalarını ekleyin. Geri dönüşü olmayan işlemler yapacaksanız mutlaka test edin.
  • İzinler: Çalıştıracağınız betik veya dosyaların uygun izinleri (chmod +x) olmalıdır. Ayrıca cron, o kullanıcı hesabının izinleriyle çalışır, başka kullanıcının dosyalarına erişemez.
  • Kaynak Kullanımı: Çok yoğun CPU/IO gerektiren işler için uygun aralıklar belirleyin. Mümkünse yoğun işleri gece veya az trafik olan zamanlarda planlayın. Gerektiğinde nice veya cron aralığını artırarak sistem yükünü dengede tutun.
  • Hassas Bilgiler: Parola, API anahtarı gibi gizli verileri komut satırına doğrudan yazmaktan kaçının. MySQL parolası için ~/.my.cnf gibi yapılandırma dosyalarını veya ortam değişkenlerini kullanmak daha güvenlidir.
  • Sık Çalışan Görevler: Eğer birden fazla cron job kısa aralıklarla çalışıyorsa, görevlerin üst üste binmemesine dikkat edin. Bir görev henüz tamamlanmadan aynı görevin tekrarlanmaması için aralıkları uygun ayarlayın.
  • Dosya Yedekleme: Cron ile kritik dosya veya veritabanı işlemleri yapıyorsanız, işten önce gerekli yedeklemeleri oluşturduğunuzdan emin olun. Örneğin, veritabanı temizliği yapmadan önce mysqldump ile bir yedeğini almak iyi bir pratiktir.

Bu önlemler, cron job’larınızın güvenli ve sorunsuz çalışmasını sağlar. Her yeni cron eklediğinizde dikkatlice kontrol edin ve gerekirse küçük testler yaparak ilerleyin.

Bu kılavuzla, cPanel üzerinde Cron Job yönetimini adım adım öğrenerek kendi otomatik görevlerinizi kolayca tanımlayabilir ve yönetebilirsiniz.

 

🚀 cPanel Cron Job Özelliği Tüm Hosting Paketlerimizde Ücretsiz!

Hedef Hosting olarak sunduğumuz tüm hosting paketlerinde cPanel panel ücretsiz olarak sunulmaktadır. Web sitenizi yönetmek, zamanlanmış görevler oluşturmak ve sitenizin performansını artırmak artık çok daha kolay.

Ekonomik Hosting Paketlerimizi İnceleyin
Premium Hosting Paketlerine Göz Atın
Reseller Hosting ile Kendi Hosting İşinizi Kurun

Tüm cPanel özelliklerinden tam erişimle yararlanmak için hemen bir paket seçin, dakikalar içinde web sitenizi yayınlayın!

Yazıyı Paylaş:

Son Yazılar

hedef hosting logo
Gizlilik Genel Bakışı

Bu web sitesi, size en iyi kullanıcı deneyimini sunabilmemiz için çerezler kullanmaktadır.
Çerez bilgileri tarayıcınızda saklanır ve geri döndüğünüzde sizi tanımak ya da web sitemizin hangi bölümlerini ilginç ve faydalı bulduğunuzu anlamamıza yardımcı olmak gibi işlevler sağlar.