Linux'ta Crontab: İş Planlama ÖRNEKLERİ

Crontab nedir?

Cron, adını Yunanca zaman için kullanılan “Kronos” sözcüğünden alıyor. Belirli bir programa göre görevleri otomatik olarak gerçekleştirecek bir sistem işlemidir. Düzenli planlama görevlerini yürütmek için kullanılan bir dizi komuttur. Crontab, “cron tablosu” anlamına gelir. Görevleri yürütmek için cron olarak bilinen iş zamanlayıcının kullanılmasına olanak tanır.

Crontab aynı zamanda bu programı düzenlemek için kullanılan programın adıdır. Belirli bir zamanlamaya göre periyodik olarak çalışacak kabuk komutlarını belirten bir yapılandırma dosyası olan bir crontab dosyası tarafından yönlendirilir.

Neden Cronjobs'u kullanmalısınız?

Linux'ta Cronjobs kullanmanın nedenleri şunlardır:

  • İşletim sisteminin günlük dosyalarının veya veritabanının planlanmış bir yedeğini almasına yardımcı olur.
  • Eski günlük dosyalarını silin
  • Archive veritabanı tablolarını temizle
  • Haber bültenleri, şifre son kullanma tarihi e-postası gibi herhangi bir bildirim e-postası gönderin
  • Önbelleğe alınan verilerin düzenli olarak temizlenmesi
  • Crontab, Unix işlerini otomatikleştirmek için ideal bir seçenektir.
  • Sistem bakımını otomatikleştirmek için kullanılır

Linux'ta cron nasıl kullanılır?

Linux sistemi paketinde crontab adında kullanışlı bir görev zamanlayıcı bulunur. Crontab, kök olarak otomatik bir işlemi çalıştıracak şekilde planlanabildiği için popülerdir. Bu nedenle, kök olarak çalışan otomatik bir işlemin olması sistem değişikliklerini kolaylaştırır. Görevi değiştirmeniz ve ardından görev yeniden başlatılana kadar beklemeniz yeterlidir.

Linux Crontab biçimi

Linux'un Crontab'ında altı alan vardır. İlk beş alan yürütme saatini ve tarihini tanımlar, 6'ncı alan ise komutun yürütülmesi için kullanılır.

Crontab sözdizimi:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Linux Crontab biçimi

  • Astriks (*): Eşleştirme için kullanın
  • Aralığı tanımlayın: Kısa çizgi yardımıyla 1-10 veya 30-40 veya jan-mar, pazartesi-çarş gibi bir aralık tanımlamanıza olanak tanır.
  • Birden çok aralık tanımlayın: Nisan-haziran, ekim-aralık gibi ayrılmış komutlarla çeşitli aralıklar tanımlamanıza olanak tanır.

Crontab Nasıl Eklenir/Değiştirilir

Kullanıcı, aşağıdaki crontab komutunun yardımıyla crontab işlerini düzenleyebilir:

$ crontab -u -e 

Yukarıdaki komut, bilgisayar sisteminizin, varsayılan metin düzenleyicinizi kullanarak düzenlenebilecek kişisel crontab yapılandırmasını açacaktır.

Aşağıdaki komutu kullandığınızda crontab'ınız otomatik olarak değişikliklerinizi alacağından crontab'ınızı yeniden başlatmanıza gerek yoktur.

$ crontab -l

Crontab görevlerinizi kaldırmak için aşağıdaki komutu kullanın.

$ crontab -r

Crontab'a iş eklemek veya güncellemek için aşağıdaki komutu kullanın.

crontab -e

Diğer kullanıcının crontab'ını düzenleme komutu

crontab -u username -e

Crontab Nasıl Listelenir?

Geçerli kullanıcının crontab girişlerini görüntüleme komutu

crontab -l

Belirli bir kullanıcının crontab girişlerini görüntüleme komutu:

crontab -u username -l

Önemli Crontab Örnekleri

İşte Crontab'ın bazı önemli örnekleri

Açıklamalar Komuta
Çeşitli planlama işlerini yapmak için Cron komutu.
Aşağıda verilen komut her gün sabah 7 ve akşam 5'te yürütülür.
0 7,17 * * * /scripts/script.sh
Her 5 dakikada bir cron çalıştırma komutu.
*/5* * * * *  /scripts/script.sh
Cron zamanlayıcı komutu, görevi her seferinde yürütmenize yardımcı olur. Monday sabah 5'te. Bu komut, sistem temizliği gibi haftalık görevlerin yapılmasında faydalıdır.
0 5 * * mon  /scripts/script.sh
Komut betiğinizi 3 dakika aralıklarla çalıştırın.
*/3 * * * * /scripts/monitor.sh
Belirli bir ay boyunca yürütülecek bir cron planlama komutu.
Bu komut Şubat, Haziran ve Eylül aylarında çalıştırılan görevleri çalıştırır. Bazen belirli bir aylık görevi yürütmek için bir görev planlamamız gerekir.
* * * feb,jun,sep *  /script/script.sh
Seçilen günlerde yürütülecek komut. Bu örnek her birini çalıştıracak Monday ve Çarşamba saat 5'de.
0 17 * * mon,wed  /script/script.sh
Bu komut cron'un her ayın ilk Cumartesi günü çalıştırılmasına izin verir.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Aşağıdaki gibi yapılandırılabilmesi için bir betiği 6 saat aralıklarla çalıştırma komutu.
0 */6 * * * /scripts/script.sh
Bu komut, bir görevi iki kez yürütülecek şekilde planlar Monday ve Salı. Bunu yapmak için aşağıdaki ayarları kullanın.
0 4,17 * * mon,tue /scripts/script.sh
Komut, her 15 Saniyede bir yürütülecek bir cron planlar.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Görevleri yıllık olarak planlama komutu.
@yıllık zaman damgası= “0 0 5 1 *” şeklindedir. Bu, görevi her yılın beşinci dakikasında yürütür. Yeni yıl tebriklerini göndermek için kullanabilirsiniz.
@yearly /scripts/script.sh 
Aylık olarak yürütülecek komut görevleri.
@aylık zaman damgası “0 0 1 * *” ile benzerdir. Bu komut ifadesi bir görevin ayın ilk dakikasında yürütülmesine olanak sağlar.
@monthly /scripts/script.sh
Tek bir cron kullanarak birden fazla görevi yürütme komutu.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Haftalık olarak yürütülecek görevleri zamanlama komutu.
@haftalık zaman damgası “0 0 4 * güneş”e benzer. Bu, sistem temizliği vb. gibi haftalık görevleri gerçekleştirmek için kullanılır.
@weekly /bin/script.sh
Görevin günlük olarak yürütülmesi planlanacak.
@daily zaman damgası “0 2 * * *” ile benzerdir. Görevi her günün ikinci dakikasında yerine getirir.
@daily /scripts/script.sh
Görevlerin saatlik olarak yürütülmesine izin verir.
@saatlik zaman damgası “0 * * * *” ile benzerdir. Bu komut her saatin ilk dakikasında bir görevi yürütür.
@hourly /scripts/script.sh
Görevlerin sistem yeniden başlatıldığında yürütülmesine izin verir.
@reboot ifadesi, sistemin sistem başlangıcında çalıştırmak istediği görevler için kullanışlıdır. Bu, görevlerin arka planını otomatik olarak başlatmak için faydalıdır.
@reboot /scripts/script.sh

Özet:

  • Cron, adını Yunanca zaman için kullanılan “Kronos” sözcüğünden alıyor.
  • Cronjobs, işletim sisteminin günlük dosyalarının veya veritabanının planlanmış bir yedeğini almasına yardımcı olur.
  • Linux sistem paketinde, root olarak otomatikleştirilmiş bir işlemi çalıştıracak şekilde programlanabilen, crontab adında kullanışlı bir görev zamanlayıcı bulunur.
  • Linux'un Crontab'ında altı alan vardır. İlk beş alan yürütme saatini ve tarihini tanımlar, 6'ncı alan ise komutun yürütülmesi için kullanılır.