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.
Bu Yazının İçeriği
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.
Click here to preview your posts with PRO themes ››
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 Hosting’de VPS sunucusuna sahipseniz giriş bilgilerinizi VPS yönetim sekmenizde bulabilir ve sunucunuza SSH üzerinden erişebilirsiniz.
İş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
komutunu çalıştırın:
Böyle bir sonuç elde edersiniz.
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.
Geçerli kullanıcı iken mevcut crontab dosyasını kaldırmak istiyorsanız
kodunu kullanabilirsiniz.
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
komutunu girmektir. Eğer oluşturulmadıysa göreceğiniz sonuç budur.
Ek olarak eğer diğer kullanıcıların crontab dosyası listelerini görmek istiyorsanız superuser olarak
komutunu girebilirsiniz.
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 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.
Click here to preview your posts with PRO themes ››
- 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:
Bunun dışında, eğer e-posta sonucunu belirli bir hesaba yollamak istiyorsanız e-posta adresinden MAILTO ekleyebilirsiniz. İşte bir örnek:
İşte daha fazla söz dizimi örneği:
Söz dizimi | Anlamı |
0 0 * * * /bin/sh backup.sh | Her gece yarısı veritabanı yedeği almak için |
0 6,18 * * * /bin/sh backup.sh | Günde iki defa 06:00 ve 18:00 saatlerinde veritabanı yedeği almak için |
0 */6 * * * /scripts/monitor.sh | Her altı saatte bir takip etmek için |
*/10 * * * * /home/user/script.sh | Her 10 dakikada bir ana dizindeki script dosyası için bir cron job uygulamak için |
0 * 20 7 * /bin/sh backup.sh | Her Temmuz 20 tarihinde saatlik yedek almak için |
0 0 * * 2 * /bin/sh | Her Salı günü gece yarısında veritabanı yedeği almak için |
* * * 1,2,5 * /script/script.sh | Ocak, Şubat ve Mayıs aylarında bir komut çalıştırmak için |
10-59/5 5 * * * /home/user/script.sh | Saat 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.sh | Tek bir cron job’da birden çok görev çalıştırmak için planlama belirleme |
@reboot /scripts/script.sh | Sistemi her başlattığınızda belirli bir görev yapmak için |
0 0 1 * * /home/user/script.sh | Her ayın ilk günü bir görev çalıştırmak için |
Click here to preview your posts with PRO themes ››
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!