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ı:
- cPanel ana sayfasında Cron Jobs simgesini bulun ve tıklayın.
- 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.
- 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.).
- 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).
- 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ğin30
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ğin0
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
>/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:
- 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ı veyawget/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
veyaphp /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çlarcron.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
veyacron
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!