Cron, herhangi bir kullanıcı müdahalesi olmadan belirli bir programda komutların veya komut dosyalarının çalıştırılmasına izin veren Linux veya UNIX benzeri işletim sistemindeki en kullanışlı yardımcı programdır. Zamanlanmış komutlar ve betikler de cron işleri olarak adlandırılır. Çoğunlukla programlı yedeklemeleri çalıştırmak, geçici dosyaları temizlemek, sistem bakımı ve diğer çeşitli yinelenen işler gibi yinelenen işleri otomatikleştirmek için kullanılır. Windows işletim sistemindeki Görev Zamanlayıcı’ya benzer.
Bu eğitimde, cron ile bir işi planlamak için anlamanız gereken her şeyin temel girişini size sağlayacağız. Bu, temel cron sözdizimini, crontab dosyasını düzenlemeyi, birkaç örnekle cron ile bir işi planlamayı, cron işini görüntülemeyi vb. İçerir.
Cron Job’un Temelleri
Bir cron işinin bazı temellerini anlayalım.
Crond nedir?
Crond, Linux sistemindeki arka planda çalışan ve o sırada planlanmış herhangi bir iş olup olmadığını görmek için her dakika kontrol eden arka plan programıdır. Varsa o işi yapar, yoksa hareketsiz kalır.
Cron İş Sözdizimi
Cron işi için sözdizimi aşağıdaki gibidir:* * * * * komut / komut dosyası
Soldan:
- İlk *, Dakika’ya (0-59) karşılık gelir
- İkinci *, Saate (0-23) karşılık gelir
- Üçüncü *, ayın Gününe (1-31) karşılık gelir
- Dördüncü * yılın Ayına (1-12) karşılık gelir
- Beşinci *, Haftanın Gününe karşılık gelir (0-6, Pazar-Cumartesi)
Bir alanda birden çok değer belirtmek için aşağıdaki operatör simgelerini kullanın:
- Yıldız işareti (*): Bir alan için tüm olası değerleri belirtmek için
- Çizgi (-): için in bir değer aralığı pecify
- Virgül (,): Bir değer listesi belirtmek için
- Ayırıcı (/): Bir adım değeri belirtmek için
Crontab Dosyasını Düzenleme
Crontab, planlanan işleri belirli bir sözdiziminde içeren bir dosyadır. İki tür crontab dosyası vardır; biri sisteme özgü cron işleri için, diğeri ise kullanıcıya özgü cron işleri içindir.
Sistem cron işleri
Sistem genelinde cron işleri / etc / crontab dosyasında ve /etc/cron.d dizininde bulunur ve /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly ve /etc/cron.monthly. Bu dosyalara yalnızca bir sistem yöneticisi erişebilir.
Bir sistem yöneticisi aşağıdaki komutu kullanarak bir cron işi tanımlayabilir:$ nano / etc / crontab
İşte / etc / crontab dosyasındaki işin sözdizimi :# dak hr ayın günü ay haftanın günü kullanıcı adı komutu
* * * * * kullanıcı1 ifconfig

Kullanıcıya özel cron işleri
Kullanıcıya özel cron işleri / var / spool / cron / crontabs dizininde bulunur. Bu işleri manuel olarak düzenleyebilmenize rağmen, bu işleri crontab -e komutunu kullanarak düzenlemeniz önerilir.
Standart bir kullanıcı, aşağıdaki komutu kullanarak bir cron işi tanımlayabilir:$ crontab -e
Örneğin, bir “test” kullanıcısı olarak oturum açtıysanız, crontab -e komutunun çalıştırılması, “test” kullanıcısı için crontab dosyasını düzenleyecektir. Benzer şekilde, bir kök kullanıcı olarak oturum açtıysanız, crontab -e komutu, kök kullanıcı için crontab dosyasını düzenleyecektir.
Diğer herhangi bir kullanıcı için crontab dosyasını düzenlemek için Terminal’de aşağıdaki komutu çalıştırın:$ sudo crontab -u < kullanıcı adı > -e
Örneğin, “test1” kullanıcısı olarak oturum açtıysanız ve “test2” kullanıcısı için crontab dosyasını düzenlemek istiyorsanız, komut şu şekilde olacaktır:$ sudo crontab -u test2 -e
Crontab dosyasına eklenebilecek cron işinin sözdizimi şöyledir:# mh dayofmonth monthofweek command
* * * * * ifconfig
Kullanıcıya özel işlerde dosyalanmış “kullanıcı adı” olmadığını görebilirsiniz.
Crontab Komutları
Crontab komutu, cron işlerini düzenlemek, listelemek ve kaldırmak için kullanılır:
- crontab -e Mevcut kullanıcının crontab dosyasını düzenlemek için
- crontab -l crontab dosyasının içeriğini görüntülemek için
- crontab -u [kullanıcı adı] Başka herhangi bir kullanıcının crontab dosyasını düzenlemek için
- crontab -r Mevcut kullanıcının crontab dosyasını kaldırmak için
- crontab -i Mevcut kullanıcının crontab dosyasını kaldırmadan önce bir komut istemi görüntülemek için
Cron ile İş Planlama
Cron ile bir işi belirli bir zamanda, tarihte ve aralıklarla dakika cinsinden minimum birimle çalıştırabilirsiniz, yani bir işi her dakika çalıştırabilirsiniz.
Cron ile bir işi planlamak için, önceki bölümde anlatılan yöntemi kullanarak crontab dosyasını açın. Crontab dosyasını açtığınızda, bir metin düzenleyici seçmeniz istenecektir. Tercih ettiğiniz metin düzenleyiciyi seçmek için bir sayı yazın. Dosyanın en altına gidin ve yukarıda açıklanan söz dizimine göre işler ekleyin. Bir dosyadaki her satır bir komutu belirtir. Satırdaki ilk beş giriş zamanlanan zamanı belirtir ve son giriş hangi komutun veya komut dosyasının çalıştırılması gerektiğini belirtir.
Misal:
Crontab dosyasındaki aşağıdaki satır, cron işini, Pazartesi’den Cumartesi’ye kadar haftanın her günü 5 saati geçtikten sonra her 30. dakikada bir çalıştıracak şekilde zamanlayacaktır.* / 30 5 * * 1 – 6 komut / komut

Dakika
Bu alanda komutun çalıştırılmasını istediğimiz dakikaları belirtiyoruz. 0 ile 59 arasında belirtilir. Bu alandaki *, işi her dakika çalıştırmak anlamına gelir. Yukarıdaki crontab satırında * / 30, cron işine her 30 dakikada bir belirtilen komutu / betiği çalıştırmasını söyler.
Saatler
Bu alanda komutun çalıştırılmasını istediğimiz saatleri belirtiyoruz. 0 ile 23 arasında belirtilir. Bu alandaki *, işin her saat çalıştırılması anlamına gelir. Yukarıdaki crontab satırında, 5 değeri cron işine belirtilen komutu / betiği her beş saatte bir çalıştırmasını söyler.
Ayın günü
Bu alanda, komutun çalıştırılmasını istediğimiz ayların belirli günlerini belirtiyoruz. 1’den 31’e kadar belirtilir. Bu alandaki * her gün anlamına gelir. Yukarıdaki crontab satırında, * cron işine belirtilen komutu / betiği her gün çalıştırmasını söyler.
Yılın ayı
Bu alanda komutun çalıştırılmasını istediğimiz belirli ayları belirtiyoruz. 1’den 12’ye kadar belirtilir. Bu alandaki * her ay anlamına gelir. Yukarıdaki crontab satırında, * cron işine her ay belirtilen komutu / betiği çalıştırmasını söyler.
Haftanın günü
Bu alanda, komutun çalıştırılmasını istediğimiz haftanın belirli günlerini belirtiyoruz. Pazar gününden Cumartesi gününe kadar 0 ile 6 arasında belirtilir (Pazar için 0 ve Cumartesi için 6). Bu alandaki *, haftanın her günü anlamına gelir. Yukarıdaki crontab satırında, * cron işine haftada her gün belirtilen komutu / betiği çalıştırmasını söyler.
Cron İşlerine Örnekler
İşte birkaç cron işi örneği:
Her 15 dakikada bir cron işi çalıştırın
Bir cron işini her 15 dakikada bir çalışacak şekilde planlamak için crontab dosyasına aşağıdaki satırı ekleyin:* / 15 * * * * komut / komut dosyası
Her gün saat 5’te bir cron işi çalıştırın
Bir cron işini her gün saat 5’te çalışacak şekilde planlamak için, crontab dosyasına aşağıdaki satırı ekleyin:0 5 * * * komut / komut dosyası
Her gün saat 17: 00’de bir cron işi çalıştırın
Bir cron işini her gün saat 17: 00’de çalışacak şekilde planlamak için crontab dosyasına aşağıdaki satırı ekleyin:0 17 * * * komut / komut dosyası
Her ayın ilk günü saat 9’da bir cron işi çalıştırın
Bir cron işini her ayın ilk günü saat 9’da çalışacak şekilde planlamak için crontab dosyasına aşağıdaki satırı ekleyin:0 9 1 * * komut / komut dosyası
Her 15 Mart’ta her saat bir cron işi çalıştırın
Her 15 Mart’ta her saat bir cron işi planlamak için crontab dosyasına aşağıdaki satırı ekleyin:0 * 15 3 * komut / komut dosyası
Her 5 saatte bir cron işi çalıştırın
Her 5 saatte bir cron işi planlamak için crontab dosyasına aşağıdaki satırı ekleyin:0 * / 5 * * * komut / komut dosyası
Her 15 dakikada bir cron işi çalıştırın
Bir cron işini her 15 dakikada bir çalışacak şekilde planlamak için crontab dosyasına aşağıdaki satırı ekleyin:* / 15 * * * *
Dizeleri Kullanma
Aşağıdaki dizeler bir işi tanımlamak için de kullanılabilir:
- @hourly: Bir işi saatte bir yürütmek için, yani ” 0 * * * * “
- @midnight: Her gün bir işi yürütmek için, yani ” 0 0 * * * “
- @daily: gece yarısı ile aynı
- @weekly: Haftada bir işi yürütmek için, yani ” 0 0 * * 0 “
- @monthly: Her ay bir işi yürütmek için, yani ” 0 0 1 * * “
- @yıllık: Her yıl bir işi yürütmek için, yani ” 0 0 1 1 * “
- @ yıllık: @ yıllık olarak aynı
- @reboot: Her başlangıçta bir işi bir kez yürütmek için
Örneğin, her hafta bir komut dosyası veya komut çalıştırmak için crontab dosyasındaki giriş şöyle olacaktır:@ haftalık komut / komut dosyası
Önceden tanımlanmış Cron Dizinleri
Linux’ta depolanan betiklerin otomatik olarak yürütüldüğü önceden tanımlanmış bazı cron dizinleri vardır. Bu dizinlerin altına herhangi bir komut dosyası yerleştirirsek, yapılandırılan zamanda otomatik olarak çalıştırılacaktır.
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
Örneğin, her ay bir betiği çalıştırmak için /etc/cron.monthly içine yerleştirmeniz gerekir.
Cron İşlerini Görüntüleyin
Mevcut kullanıcı için işleri görüntüleyin
Geçerli kullanıcı için tüm zamanlanmış cron işlerini görüntülemek için aşağıdaki komutu kullanın:$ crontab -l
Kök kullanıcılar için işleri görüntüleyin
Kök kullanıcının tüm zamanlanmış işlerini görüntülemek için, Terminal’de aşağıdaki komutu verin:$ kedi / etc / crontab
Kök kullanıcı olarak oturum açmanız veya komutu sudo olarak çalıştırmanız gerekecek.
Diğer kullanıcılar için işleri görüntüleyin
Belirli bir kullanıcının tüm zamanlanmış işlerini görüntülemek için, Terminal’de <kullanıcı adı> yerine gerçek kullanıcı adıyla aşağıdaki komutu verin:$ sudo crontab -u < kullanıcı adı > -l
Bu komutu çalıştırmak için sudo ayrıcalıklarına ihtiyacınız olacak.
Saatlik cron işlerini görüntüleyin
Saatlik çalışacak şekilde yapılandırılmış tüm cron işlerini görüntülemek için, Terminal’de aşağıdaki komutu çalıştırın:$ ls -la / etc / cron.hourly
Günlük cron işlerini görüntüleyin
Günlük çalışacak şekilde yapılandırılmış tüm cron işlerini görüntülemek için, Terminal’de aşağıdaki komutu verin:$ ls -la / etc / cron.daily /
Haftalık cron işlerini görüntüleyin
Haftalık olarak çalışacak şekilde yapılandırılan tüm cron işlerini görüntülemek için, Terminal’de aşağıdaki komutu çalıştırın:$ ls -la / etc / cron.weekly /
Aylık cron işlerini görüntüleyin
Aylık olarak çalışacak şekilde yapılandırılmış tüm cron işlerini görüntülemek için, Terminal’de aşağıdaki komutu verin:$ ls -la / etc / cron.monthly /
Tüm Cron İşlerini Yedekle
Silme durumunda kurtarabilmeniz için tüm cron işlerinin yedeğini bir dosyada tutmanız önerilir. Tüm geçerli işlerin bir yedeğini almak için, yeniden yönlendirme operatörünü kullanarak crontab -l’nin çıktısını bir dosyaya yeniden yönlendirin.$ crontab -l > backup_cron.txt
Tüm Zamanlanmış Cron İşlerini Kaldırma
Tüm zamanlanmış cron işlerini kaldırmak için -r bayrağını aşağıdaki gibi kullanın:$ crontab -r
Cron İzni
Crontab komutuna erişimi iki dosya ile sınırlayabiliriz: / etc / cron.allow ve / etc / cron.deny.
- /etc/cron.allow – crontab komutlarına erişmesine izin vermek istediğiniz kullanıcıları (satır başına bir tane) ekleyin. Bu kullanıcılar planlanmış işleri çalıştırabilir.
- /etc/cron.deny – crontab komutlarına erişimini reddetmek istediğiniz kullanıcıları (satır başına bir tane) ekleyin. Bu kullanıcılar planlanmış işleri çalıştıramaz.
Crontab Sözdizimi Oluşturucuları
Crontabs için sözdizimi oluşturmaya izin veren bazı web siteleri vardır. Bu web siteleri, sözdizimini hatırlamak zorunda kalmadan crontab ifadesini oluşturmayı kolaylaştırır. Crontabgenerator.com , crontab-generator.org ve cronmaker.com gibi sözdizimi oluşturucular için çeşitli web siteleri olmasına rağmen . En çok tercih ettiğim ve yararlı bulduğum crontab.guru . Kullanıcı girdisine bağlı olarak, crontab dosyasına kopyalayıp yapıştırabileceğiniz bir crontab ifadesi oluşturur.
Özetle
Cron işlerinin temellerini, sözdizimini ve nasıl kurulacağını açıkladık. Ayrıca cron işlerini nasıl görüntüleyeceğimizi, bir yedek oluşturmayı ve artık gerekmiyorsa bunları nasıl kaldıracağımızı da tartıştık.