Blog Single

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.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın