ZAMANLANMIŞ GÖREVLER (Automated Tasks)

Linux’ta belirli aralıklarla yapılması gereken görevler, zamanı gelince otomatik olarak çalıştırılacak şekilde yapılandırılabilir.

RedHat linux, sistem ile ilgili görevleri yönetebilmek için bazı komutları zamanı gelince otomatik olarak çalıştıracak şekilde hazırlanmıştır. Örneğin locate komutunun güncel sonuçlar üretebilmesi için slocate veritabanını günlük olarak güncellemektedir.

Sistem yöneticileri zamanlanmış görevleri periyodik yedeklemeler, sistemi gözleme, çeşitli scriptleri çalıştırmak gibi işler için kullanırlar.

Redhat Linux 3 adet zamanlanmış görev aracı ile gelir. Ben bu yazıda crondan bahsediyor olacağım

  • at
  • cron
  • batch

Cron:

cron, belirli bir zamanda, ayın belirli gününde, haftan ın belirli gününde veya haftada bir çeşitli görevleri çalıştırmak için tasarlanmış bir Daemon dur. (Çoklu görevli işletim sistemlerinde, doğrudan interaktif kullanıcıyla etkileşimli olmaktan ziyade arka planda çalışan programlardır)

Cron servisinin çalışabilmesi için vixie-cron RPM paketi kurulmuş olmalıdır. Bu paketin kurulu olup olmadığını denetlemek için

rpm -q vixie-cron

komutunu kullanabilirsiniz.

cron RPM paketi kurulu ise bunun DAEMON porgramı olan crond çalışıyor olmalıdır. Servisin durumunu kontrol etmek için

 service crond status

Aşağıda /etc/crontab dosyası görülmektedir.

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

İlk dört satır, zamanlanmış görevlerin kullanacağı kabuk değişkenlerini tanımlamaktadır.

  • SHELL değişkeni zamanlanmış görevin hangi komut yorumlayıcı ile çalıştırılacağını gösterir.
  • PATH değişkeni ise zamanlanmış görevdeki komutların hangi klasörlerde bulunduğunu gösterir.
  • MAILTO değişkeni, cron görevlerinin çıktısının hangi kullanıcıya mail olarak gönderileceğini belirtir. MAILTO=”” şeklinde yazılırsa hiçbir kullanıcıya mail gitmez.
  • HOME değişkeni ise zamanlanmış komutun ev dizini olarak nereyi algılaması gerektiği gösterilir.

Bundan sonraki satırların tümünün başında yer alan sayısal ifadeler aşağıdaki tarih tanımlamalarını belirtir.

 

minute       hour   day        month   dayofweek        command

  • minute — 0 ile 59 arası tamsayı
  • hour — 0 ile 23 arası tamsayı
  • day — 1 ile 31 arası tamsayı(seçilen aya uygun olarak yazılmalıdır, örneğin bazı aylarda 31 yoktur.)
  • month — 1 den 12 ye kadar tamsayı
  • dayofweek — 0 dan 7 ye kadar tamsayı(0 yada 7 Pazar gününü belirtir.)
  • command — çalıştırılacak olan komut

 

Yukarıdaki her bir alan için (*) işareti o alanın alabileceği tüm değerleri simgeler. Örneğin ay için * konmuşsa bu tüm aylarda çalıştırılacak anlamına gelir.

(#) işareti ile başlayan her satır kullanıcıların okuması içindir, çalıştırılmazlar. (Yorum satırı)

Redhat Linux

  • Saatlik /etc/cron.hourly,
  • Günlük /etc/cron.daily,
  • Haftalık /etc/cron.weekly
  • Aylık /etc/cron.monthly

görevler için hazır görev klasörleri oluşturmuştur. Örneğin her gün çalıştırılmasını istediğimiz bir komut /etc/cron.daily/ klasörüne kabuk program olarak yerleştirilebilir.

 

Örnek:

#her pazartesi sabah 3:30 da sistemin bellek kullanımını

#/tmp/meminfo adlı bir metin dosyasına yazan program

30 3 * * 1 root cat /proc/meminfo >> /tmp/meminfo

#Her ayın ilk günü sabah 4:10 da yedek alan script

10 4 1 * * root /root/scripts/backup.sh

 

/etc/crontab dosyası ile zamanlanmış görev çalıştırmayı yalnızca root kullancısı yapabilir.

Root olmayan kullanıcılar

crontab –e

komutu ile vi editor aracılığı ile zamanlanmış görev yazabilirler. Kullanıcıların yazdıkları görevler

 /var/spool/cron

klasöründe tutulur ve cron program ı bunlar ı kullanıcının kendi haklarıyla çalıştırır.

cron DAEMON programı her dakika /etc/crontab ve /var/spool/cron klasörünü kontrol ederek yeni eklenen görevleri öğrenir.

 

Cron servisini durdurmak ve başlatmak

Başlatmak için

 

service crond start (veya /etc/init.d/crond start)

 

durdurmak için ise

 

/sbin/service crond stop

 

kullanılır.

 

Cron hazırlamak için aşağıdaki adresler kolaylık sağlamaktadır:

https://crontab-generator.org/

https://crontab.guru/


0 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir