Cron'u Anlamak ve Kullanmak: İşleri Planlamak İçin Kapsamlı Bir Kılavuz
croniçin kısa komut çevrimiçi çalıştır, Unix benzeri işletim sistemlerinde güçlü, zamana dayalı bir iş zamanlayıcıdır. Dönem cron bu bir kelime oyunudur kronos or chronosYunan mitolojisinde zamanı temsil eden. Zamana dayalı iş zamanlayıcının cron adı, görevleri belirli zamanlarda veya aralıklarla planlama ve yürütme işlevini yansıtır ve bu da onu mitolojideki zaman kavramına uygun bir referans haline getirir.
Cron, tekrarlanan görevleri otomatikleştirmenize, komut dosyalarını belirli aralıklarla yürütmenize ve sistem verimliliğini korumanıza olanak tanır. Bu kapsamlı kılavuz, kurulumdan kullanıma, anahtar kelimelere ve gerçek kod örneklerine kadar cron hakkında bilmeniz gereken her şeyde size yol gösterecektir.
İçindekiler
- Cron nedir?
- Cron'u yükleme
- Temel Kavramlar ve Terminoloji
- Cron Söz Dizimi
- Örnekler ve Kullanım Durumları
- Yaygın Tuzaklar ve En İyi Uygulamalar
- Ek cron kaynakları
Cron nedir?
Cron, Linux ve macOS dahil Unix tabanlı sistemlerde çalışan bir arka plan sürecidir. Birincil amacı zamanlanmış görevleri otomatik olarak yürütmektir. Bu görevler basit komut dosyalarından sistem bakımı ve yedeklemelere kadar değişebilir.
Cron'u yükleme
Unix benzeri sistemlerin çoğunda cron önceden kuruludur. Bir terminal açıp şunu yazarak kullanılabilirliğini kontrol edebilirsiniz:
crontab -e
Bu komut cron tablosu düzenleyicisini açarsa, cron yüklüdür. Değilse sisteminizin paket yöneticisini kullanarak kurabilirsiniz. Örneğin Ubuntu'da şunları kullanabilirsiniz:
sudo apt-get install cron
Cron Kavramları ve Terminolojisi
Cron kullanımına dalmadan önce bazı temel kavramları ve terminolojiyi anlayalım:
- crontab: Kısa cron tablosu, bir kullanıcı için zamanlanmış görevlerin listesini içeren bir dosyadır.
- Cronjob: Belirli bir zamanda çalışacak şekilde zamanlanmış tek bir görev veya komut.
- Alanlar: Her cronjob'ta işin ne zaman çalışacağını tanımlayan beş alan bulunur:
- Dakika (0-59)
- Saat (0-23)
- Ayın günü (1-31)
- Ay (1-12)
- Haftanın günü (0-7, hem 0 hem de 7 Pazar'ı temsil eder)
Cron Söz Dizimi
Bir crontab girişinin sözdizimini anlamak çok önemlidir. Şu modeli takip ediyor:
* * * * * command-to-be-executed
İşte cron işinize ekleyebileceğiniz yorumlu bir açıklama:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Her yıldız işareti (*), cron ifadesindeki bir alanı temsil eder. Örneğin, bir işi her gün saat 3:30'a planlamak için şunu kullanırsınız:
30 15 * * * command-to-be-executed
Cron Örnekleri ve Kullanım Durumları
Cron kullanımını göstermek için bazı pratik örnekleri inceleyelim:
- Günlük Bir Komut Dosyasını Çalıştırmak: Her gün gece yarısı bir komut dosyasını çalıştırmak için şunları kullanabilirsiniz:
0 0 * * * /path/to/script.sh
- Her Saatte Bir Komut Dosyası Çalıştırma: Saatlik bir görev için şunu kullanın:
0 * * * * /path/to/script.sh
- Haftalık Yedekleme: Pazar günleri saat 2'de haftalık yedekleme planlamak için şunu kullanın:
0 2 * * 0 /path/to/backup-script.sh
- Bir Görevin Belirli Aylarda Çalıştırılması: Bir işi yalnızca Ocak ve Temmuz aylarında sabah 8:30'da çalıştırmak için:
30 8 * 1,7 * /path/to/script.sh
Cron Tuzakları ve En İyi Uygulamalar
- Ortam Değişkenleri: Cron işleri, kabuğunuzun ortam değişkenlerini devralmadığından, cron işlerinizin gerekli ortam değişkenlerini ayarladığından emin olun.
- İzinler: Betik dosyanızın izinlerini yürütülebilir olarak ayarladığınızdan emin olun. Senaryomu her yeniden kaydettiğimde, izinlerimin yeniden ayarlanması gerektiğini görüyordum!
- Yol Değişkenleri: Göreceli yollarla ilgili sorunlardan kaçınmak için cron işleriniz içindeki yürütülebilir dosyalara ve komut dosyalarına giden tam yolu belirtin.
- Test yapmak: Beklendiği gibi çalıştıklarından emin olmak için kritik cron işlerini ayarlamadan önce bunları güvenli bir ortamda test edin.
- Günlüğü: Cron işlerinizin çıktısını, yürütülmesini ve olası hataları izlemek için bir günlük dosyasına yönlendirin.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Bu cron işi bir komut dosyasını çalıştırır /path/to/script.sh
her gün gece yarısı ve komut dosyası tarafından oluşturulan çıktı (hem stdout hem de stderr) günlük dosyasına eklenir.
/path/to/cron.log
. Bu, izleme ve sorun giderme amacıyla cron işlerinin çıktısını yakalamak ve günlüğe kaydetmek için yaygın bir uygulamadır. Bu özel cron işi söz dizimini inceleyelim:
- *0 0 * * *: Bu bölüm, cron işinin ne zaman çalışması gerektiğine ilişkin programı tanımlar. Bu durumda, her gün gece yarısında (0 saati 0 dakika geçe) çalışacak şekilde planlanır.
- /path/to/script.sh: Bu, cron işi çalıştırıldığında yürütülecek komut veya komut dosyasıdır. Bu örnekte şu konumda bulunan bir komut dosyası gösterilmektedir:
/path/to/script.sh
. - >> /yol/giden/cron.log: Bu bölüm cron işinin standart çıktısını (stdout) adlı bir günlük dosyasına yönlendirir.
cron.log
da yerleşmiş/path/to/
.>>
operatörü çıktıyı günlük dosyasına ekler, böylece dosya yoksa oluşturulur ve zaten varsa çıktı dosyanın sonuna eklenir. - 2> & 1: Bu, hem standart çıktıyı (stdout) hem de standart hatayı (stderr) aynı günlük dosyasına yönlendirmek için kullanılır.
2
stderr'i temsil eder ve1
stdout'u temsil eder. Bu yüzden,2>&1
hem stdout hem de stderr'in daha önce belirtilen aynı günlük dosyasına yönlendirildiği anlamına gelir.
Cron, Unix tabanlı sistemlerde görevleri otomatikleştirmek için değerli bir araçtır. Esnek planlama seçenekleriyle sistem yönetimini basitleştirebilir ve verimliliği artırabilir. Sözdizimini anlayarak ve en iyi uygulamaları takip ederek, rutin görevlerinizi etkili bir şekilde otomatikleştirmek için cron'un gücünden yararlanabilirsiniz.
Ek Cron Kaynakları
- Unix Daemon'u - Dean Wilson