Cron Jobs

0
Share

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:

  1. Yıldız işareti (*): Bir alan için tüm olası değerleri belirtmek için
  2. Çizgi (-): için in bir değer aralığı pecify
  3. Virgül (,): Bir değer listesi belirtmek için
  4. 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:

  1. @hourly: Bir işi saatte bir yürütmek için, yani ” 0 * * * * “
  2. @midnight: Her gün bir işi yürütmek için, yani ” 0 0 * * * “
  3. @daily: gece yarısı ile aynı
  4. @weekly: Haftada bir işi yürütmek için, yani ” 0 0 * * 0 “
  5. @monthly: Her ay bir işi yürütmek için, yani ” 0 0 1 * * “
  6. @yıllık: Her yıl bir işi yürütmek için, yani ” 0 0 1 1 * “
  7. @ yıllık: @ yıllık olarak aynı
  8. @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.

(Visited 523 times, 1 visits today)