Özellikle ilk defa kullanmaya başladıysanız Linux işletim sistemini sizi üzecek şeylerden birincisi zaten hakim olamadığınız sistemde birde her gün aynı şeyleri yapmaya çalışmak olacaktır. Benim gibi deli değilseniz Windows’dan Linux’e hadi öğreneyim at formatı Windows’a şeklinde olmaz. Yan tarafta Windows dururken Linux diğer tarafta olur ve hep öksüz olur , yetim olur o Linux eğer bir sunucu değilse.
Ama gelin görün dünya Linux’a doğru evrilmeye devam ediyor. Hiç öyle burun kıvırmayın MAC’ciler siz zaten bilseniz de bilmeseniz de esasında kullandığınız MacOS ‘un arayüzü Linux’un Debian dağıtımı üzerinde çalışıyor aynı Ubuntu gibi. Hiç havaya girmeyin aman sakın Linux’cüyüm diye; o da değilsiniz hep arayüz üzerinde çalıştığınız için :D
Neyse Sezar’ın hakkı Sezar’a biz konumuza dönelim. Bir şekilde Linux’a bulaştınız ve her gün kontrol etmeniz ve yapmanız gereken şeyler var ; mesela en azından günlük güncelleme varmı kontrol etmek ya da backup almak gibi. Linux üzerinde koşturduğunuz uygulama ya da konteyner(container) düzgün ve güvenli bir şekilde çalışmaya devam edebilmesi için ne gerekiyorsa o görevler işte.
O görevleri kendiniz yapacağınıza sisteme yaptırabilirsiniz. Bunun için bir uygulama ve iki tane yöntemi var, birincisi sistemde en üst yetki olan root yetkisine sahip olmayı gerektiriyor. Şimdi sizde root yetkisi varsa ve Linux Admin’seniz burada yazdıklarım sizin için en fazla hatırlatma anlamında faydalı olabilir.O yüzden ben aşağıda root yetkisine sahip olmadan da bunun nasıl yapılacağını anlatmaya çalışacağım.
Root yetkisi olmadan bir görevi otomatik gerçekleştirmek için planlamak
Root yetkisi olmayan kullanıcılar, cron işlerini yapılandırmak için crontab yardımcı programını kullanmalıdır. crontab uygulaması tanımladığınız işleri sanki sizmiş gibi gibi çalışacaktır.
Belirli bir kullanıcı olarak bir cron işi oluşturmak için:
- Önce terminal ekranına girin ve şu komutu çalıştırın :
[kullanıcı@localhost ~]$ crontab -e
Bu, size görsel olarak aynı notepad benzeri bir düzenleyici vasıtasıyla kullanıcının kendi crontab dosyasını düzenlemeye başlayacaktır.
- Açılan ekrana en alta şu satırı ekleyin :
0,10,20,30,40,50 17 -20 15 6,7,8 * /home/kullanici/bin/script.sh
- Dosyayı kaydedin ve düzenleyiciden çıkın.
- (isteğe bağlı) Yeni işi doğrulamak için şu komutu çalıştırarak mevcut kullanıcının crontab dosyasının içeriğini listeleyin:
[bob@localhost ~]$ crontab -l
@daily /home/kullanici/bin/script.sh
Saatlik, Günlük, Haftalık ve Aylık İşleri Planlama
- Saatlik, günlük, haftalık veya aylık bir iş planlamak için işinizin yürütmesini istediğiniz eylemleri bir kabuk komut dosyasına yerleştirin.
- Kabuk betiğini aşağıdaki dizinlerden birine yerleştirin:
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
Şu andan itibaren komut dosyanız yürütülecektir – crond hizmeti, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly ve /etc/cron.monthly dizinlerinde bulunan tüm komut dosyalarını karşılık gelen konumlarında otomatik olarak zamanlar ve çalıştırır.
Bu arada bir sürü rakamlardan oluşan bir komut silsilesi yazdık da birde ne anlama geldiğini anlasak değil mi ? Ama sakın bana “script.sh” nedir diye sormayın o çok daha uzun ayrı bir konu.
Gelin şu yukarıda crontab’e yazdığımız satırı biraz irdeleyelim ne yazmışız bakalım.
crontab’in ana şablonu aşağıdaki gibidir :
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- dakika (minute (0 - 59))
# | .------------- saat (hour (0 - 23))
# | | .---------- gün (day of month (1 - 31))
# | | | .------- ay (month (1 - 12) OR jan,feb,mar,apr ...)
# | | | | .---- haftanın günü ((0 - 6)(Sunday=0 or 7)OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * çalışıtırılacak komut lokasyonu veya komut
0,10,20,30,40,50 17 -20 15 6,7,8 * /home/kullanici/bin/script.sh
- 0,10,20,30,40,50 her 10 dakika da bir demek olsada tüm ilgili saati kapsar
- 17-20 ise hangi saat aralığında script in çalışacağını belirliyor yani 17:00 ile 20:59 arasında diyoruz
- 15 ile de hey ayın 15nci günü demiş oluyoruz
- 6,7,8 ile de yılın hangi aylarında bu script çalışacak onu belirliyoruz her ay olmasını istiyorsanız * koymalısınız
- * alanı ise haftanın hangi günü işlem yapılacak
- /home/kullanici/bin/script ise çalışmasını istediğimiz scriptin olduğu yer
Esasında çok karışık değil bir örnek daha yapalım kafanızda daha çok oturacak. Mesela ben her pazar günü sabah 02:30 da bir backup scripti çalıştırmak istiyorum diyelim :
30 2 * * sun /home/kullanici/bin/backup.sh
Peki her ay 30.ncu günü saat 4:00 ile 6:59 arasında aylık bir backup almak istiyorsak
0,10,20,30,40,50 4-6 30 * * /home/kullanici/bin/backup.sh
Umarım kafanızda daha net hale gelmiştir.