Cron, linux işletim sistemlerinde zamanlanmış görevleri belirli zaman aralıklarında arka planda çalıştıran bir uygulamadır. Crontab ise görevi ve görevi çalıştıracak kişinin bilgilerinin oluşturulduğu dosyadır.
Her kullanıcının kendi crontab dosyası bulunmaktadır. Çalışan corn job ların loglarında kullanıcı bilgilerini bulabilirsiniz. Kullanıcıların crontab oluşturma hakları vardır. Bunu engellemek için /etc/cron.deny klasörüne kullanıcı adı yazarsanız crontab oluşturma hakkını kullanıcının elinden almış olursunuz ve karşısına You (melih) are not allowed to use this program (crontab) gibi bir hata dönecektir.
Sistem tarafından oluşturulan cron lar oluduğu için servis çalışır durumda gelmektedir. Servisi çalıştırmamıza gerek yoktur fakat kontrol edelim. Chkconfig le hangi levellerde çalıştığını görebilirsiniz. Servise baktığımızda crond çalışır durumdadır.
Crontab dosyamız /etc nin altında tutulmaktadır. Çıktısına baktığımız da bize örnek olması açısından güzel bir açıklama yapılmıştır. “ # “ başlayan alanlar açıklama alanlarıdır ve bu alanlarda işlem yapılmaz. Yaptığınız tanımlamaları unutmamak adına crontab dosyasına ekleyeceğiniz job lardan önce açıklama yazmak sonrasında işinizi kolaylaştırır.
Sistem tarafından oluşturulan cron ları /etc nin altında bulabilirsiniz.
crontab dosyasına birkaç örnek ekleyelim. Crontab’ı istediğiniz bir editörle açınız. Örnekte gösterildiği gibi yazmaya başlarken zaman bilgilerini öncelikli olarak ekliyoruz sonrasında hangi kullanıcı çalıştıracaksa kullanıcı adını ve yapmak istediğimiz işlemi yazıyoruz.
Altta gördüğünüz örnek de her bir dakikada root kullanıcı için top sistem bilgilerini /melih.txt dosyasına yazmasını istemişiz.
Melih.txt dosyasının çıktısına bakarsanız top la alınan bilgileri görebilirsiniz. Bunları mail de göndertebilirsiniz.
Crontab dosyasını editörle açmadan çalışmamızı yapalım.
Crontab –e à yeni oluşturmak için
Crontab –l à var olan işleri listeler
Crontab –u à kullanıcı bilgisi gireriz
Crontab –r à var olan işleri silmek için kullanılır.
Yeni bir crontab oluşturuyorum her bir dakikada uptime komutu çalışsın aynı şekilde melih.txt ye yazsın.
İstediğiniz kullanıcı bilgisini girerek de çalışma yapabilirsiniz.
Birden fazla işlem yapmak istiyorsanız bunların hepsini bir çalıştırılabilir dosyada gösterip bunu crontab dosyasına ekleyebilirsiniz. Melih.sh dosyasını oluşturdum içine önce kayıt ettireceğim dosyanın yerini sonrasında da melih adlı bilgisayara 2 kere ping komutunu yazdım. Son olarak dosyanın modunu değiştirerek çalıştırılabilir dosya iznini veriyorum.
Olmasını bekledim işlem melih adlı bilgisayara 2 kere ping atacak ve bunları melih.txt dosyasına yazacak. Örnekleri çoğaltabilirsiniz ihtiyacınız doğrultusunda.
Contab dosyasına yazdık yapmasını istediğimiz işlemleri. Bu işlemler arka planda yapıldığı için bunların kontrol etmek için /var/log/cron dosyasının çıktısına bakınız.