Cron İle Zamanlanmış Görevler Oluşturma

Cron Crontab Linux Zamanlanmış Görevler Otomasyon Shell Terminal Bash Temel Scripting Shell Script Otomasyonu

Linux işletim sisteminde zamanlanmış görev oluşturmak için cron servisi kullanılır. Cron servisi kullanılarak sürekli tekrar eden işlemler için istenilen zaman sıklığında otomatik çalıştırılmak üzere görevler tanımlanabilir. Örneğin; her gün bir dizinin yedeğini almak, her 5 dakikada bir dizine dosya yazdırmak, haftada bir kere kullanılmayan eski dosyaları silmek, ayda bir sistemi güncellemek vb.

Yeni Bir Zamanlanmış Görev Oluşturmak ve Düzenlemek

Yeni bir zamanlanmış görev (ing.: cron job) oluşturmak için crontab -e komutu kullanılır. Zamanlanmış görevlerin kaydedildiği dosyaya cron tablosu (ing.: cron table) denir.

Yeni görev oluşturma komutu
Resim 1. Yeni görev oluşturma komutu

Terminal ekranından;

Kod

crontab -e

komutu yazılır;

Yeni görev oluşturma tablosu
Resim 2. Yeni görev oluşturma tablosu

Açılan dosyada en alta satıra çalıştırmak istediğimiz kodlar ve zamanlamaları tanımlanır;

Yeni görev oluşturma tablosu
Resim 3. Yeni görev oluşturma tablosu

Örneğin; cron servisinin çalışmasını kontrol için, dakikada bir çalışan ve tarihi bir dosyaya yazdıran görev tanımlaması;

Kod

* * * * * date >> /home/melih/Masaüstü/log.txt

dosya yazılır ve kaydedilip kapatılır. Düzenleme modundan çıkıldıktan sonra zamanlanmış görev çalışmaya başlar;

Oluşturulan görevin çalışması
Resim 4. Oluşturulan görevin çalışması

Oluşturulan Zamanlanmış Görevleri Görmek

Oluşturulan zamanlanmış görevleri listelemek için terminal ekranından;

Kod

crontab -l

komutu yazılır;

Zamanlanmış görevleri görmek
Resim 5. Zamanlanmış görevleri görmek

Zamanlanmış Görevlerin Çalışma Zamanını Ayarlamak

Görevlerin çalışmalarının zamanlaması için; dakika (m), saat (h), ayın günü (dom), ay (mon), haftanın günü (dow) sıralamasıyla tanımlama yapılır;

Çalışma zamanı açıklamaları
Resim 6. Çalışma zamanı açıklamaları

Örneğin; * * * * * tanımlaması görevi dakikada bir defa çalıştırır.

mhdommondowAçıklama
* * * * * Her dakika çalışır
* /2 * * * * Her iki dakikada bir çalışır
* /45 * * * * Her 45 dakikada bir çalışır
1 * * * * Dakika 1 olduğunda çalışır
2 * * * * Dakika 2 olduğunda çalışır
45 * * * * Dakika 45 olduğunda çalışır
* 23 * * * Saat 23 olduktan sonra her dakika çalışır
45 23 * * * Saat 23 dakika 45 oluğunda çalışır
* * 15 * * Her ayın 15 olduğunda her dakika çalışır.
* 23 15 * * Her ayın 15 olduğunda saat 23 olduktan sonra her dakika çalışır.
45 23 15 * * Her ayın 15 olduğunda saat 23 dakika 45 olduğunda çalışır.
45 23 * 2 * Şubat ayında saat 23 dakika 45 olduğunda çalışır.
45 23 * * 0 Pazar günü saat 23 dakika 45 olduğunda çalışır
Tablo 1. Örnek Zamanlama Açıklamaları

Daha fazla detay için; crontab guru sitesi ziyaret edilebilir.

Zamanlanmış Görev Olarak Shell Scripti Çalıştırmak

Zamanlanmış görev olarak .sh dosyası tanımlamak için ilgli dosyaya çalıştırma izni verilmelidir. Örneğin; her gün 23:59 olduğunda Belgelerim dizinini yedekle;

Script dosyası komutları;

Kod

#!/bin/bash

echo "Belgelerim yedekleniyor..."

cp -r /home/melih/Masaüstü/Belgelerim /home/melih/Masaüstü/BelgelerimYedek

echo "Belgelerim yedeklendi."

Script dosyasına çalıştırma izni verilmelidir;

Kod

chmod +x backup-belgelerim.sh
ls -lah

Her gün 23:59 olduğunda script dosyasını çalıştır;

Kod

59 23 * * * /home/melih/Masaüstü/backup-belgelerim.sh

Shell script çalıştırmak
Resim 7. Shell script çalıştırmak

Birden Fazla Zamanlanmış Görev Tanımlamak

Birden fazla zamanlanmış görev tanımlamak için;

Kod

crontab -e

Mevcut zamanlanmış görev tanımının altına yeni zamanlanmış görev tanımlanır;

Birden fazla zamanlanmış görev tanımlamak
Resim 8. Birden fazla zamanlanmış görev tanımlamak

Çalışan Zamanlanmış Görevlerin Loglarını Görmek

Zamanlanmış görevin çalışıp çalışmadığını görmek için cron logları incelenebilir;

Kod

var/log/cron

ya da

Kod

/var/log/syslog

komutları çalıştırılır.

Mevcut Zamanlanmış Görev Tanımlarını Yedeklemek

Zamanlanmış görev tanımlamalarını yedeklemek için;

Kod

crontab -l > my-crontab-backup.txt

komutları çalıştırılır.

Kaynaklar

  1. Cron Job , www.hostinger.com 26.12.2022 tarihinde alındı.
  2. Cron Job Nedir? Acemiler için Kapsamlı Rehber , hostinger.web.tr 26.12.2022 tarihinde alındı.
  3. Location of the crontab file , unix.stackexchange.com 26.12.2022 tarihinde alındı.
  4. Where is the user crontab stored? , askubuntu.com 26.12.2022 tarihinde alındı.
  5. How to Automate Tasks with cron Jobs in Linux , freecodecamp.org 26.12.2022 tarihinde alındı.
  6. crontab guru , crontab.guru 26.12.2022 tarihinde alındı.

 


Beğen