Cron nedir ?
- Cron, yazılım dillerinde kelime manası "Scheduling tasks" yani Zamanlandırılmış görevler anlamını taşır. İsminden de anlaşılacağı üzere, belirli görevleri belirli zamanlarda yapabilecek/çalıştırabilecek bir yapı sunar.
Cron nerelerde kullanılır ?
- Örneğin: PHP yazılım dilinde Haftalık olarak, haftanın yeni konuları isminde mail bülteni abonelerinize mail göndermek isterseniz, her bir kullanıcıya tek tek mail göndermektense bir kodun çalışmasını sağlayarak ve bilgisayar başında o kodun çalıştırılması için komut vermenize gerek kalmadan bu işlemi yürütebilirsiniz.
- Farklı bir örneği Raspberry Pi üzerinden anlatacak olursak, Cihazınızın her açılışında yada her kapanışında, Saat 05:30'da, yada her 20 dakika arayla bir kodu çalıştırmak isteyebilirsiniz.
Cron; yazılım dillerinde Cron Tab ve Cron Job olarak da nitelendirilir.
Crontab komutları nasıl çalışır ?
-
# m h dom mon dow command
Crontab'ın kullanım şeklidir. dakika saat ve komut gibi parametreler alır.
# * * * * * command to execute# ┬ ┬ ┬ ┬ ┬ # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ └───── day of week (0 - 7) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0) # │ │ │ └────────── month (1 - 12) # │ │ └─────────────── day of month (1 - 31) # │ └──────────────────── hour (0 - 23) # └───────────────────────── min (0 - 59)
Örnek kullanım;
-
0 0 * * * /home/pi/backup.sh Bu kullanıma @reboot gibi istisnai durumları da ekleyebiliriz.
Cron kullanımı
- /home/$kullanici-adiniz klasörüne girip, Gorev.py adında bir Python dosyası oluşturunuz.
- Ardından Terminali açıp, sudo crontab -e ile crontab'ı editlemek üzere açınız.
- Ardından Cronlar için 1-3 gibi seçenek sunan dosyalar belirebilir, terminal ekranına o alanlardan bir sayıyı yazıp, Enter'a basarak, düzenlemek üzere text döküman olarak açınız.
- Açılan cron dökümanının en alt kısmına;
- Bilgisayar her reboot olduğunda çalışması gereken bir kod'un yolunu göstermek için,
- @reboot python /home/$kullanici-adiniz/Gorev.py & ekleyiniz. Not: & sonda kalmalıdır.
- Ardından cihazı, sudo reboot ile tekrar başlatınız.
- Cihaz açıldığında, çalışan görevi görebilmek için, ps aux | grep /home/$kullanici-adiniz/Gorev.py kodunu terminal ekranına yollayınız.
- Çıkan sonuç ekranında, Script'in ismini ve konumunu görüyorsanız, script çalışıyor demektir.

- Ardından görevi sonlandırabilmek için, çıkan listede kullanıcı adınızdan sonraki numarayı, resimde örneğin 2342 adlı görev id'sini, sudo kill 2342 ile görev yöneticisinden sonlandırabilirsiniz.
- Gorev.py kodumda ben örnek olarak GPIO pinlerinin açılmasını test ettim. Koduna değinecek olursam;
- import RPi.GPIO as GPIO
- import time
- GPIO.setmode(GPIO.BCM)
- GPIO.setwarnings(False)
- GPIO.setup(21,GPIO.OUT)
- GPIO.output(21,GPIO.HIGH)
- time.sleep(10)
- GPIO.output(21,GPIO.LOW)
- Cihazınızda çalışan Cronları görmek için; sudo crontab -l ile isimlerini görüntüleyebilirsiniz.
Crontab'ın daha sonra değişiklik yapmak yada silinmek üzere açılması;
sudo crontab –u kullanici-adiniz –e
Not:
Her kullanıcının crontab'ı yetkilendirmeye göre farklılık gösterebilir. Bu nedenle sudo su'yu root yetkisi ile yetkilendirmek yapacağınız işleme göre fayda sağlayabilir.
Herkese iyi çalışmalar dilerim. Yararlı olması dileğiyle.