Cron İşleri: Yeni Başlayanlar Eğitimini Tamamlayın

Cron Jobs Complete Beginners Tutorial



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 bir işletim sistemindeki en kullanışlı yardımcı programdır. Zamanlanmış komutlar ve komut dosyaları da cron işleri olarak adlandırılır. Çoğunlukla, planlanmış yedeklemeleri çalıştırma, geçici dosyaları temizleme, 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ş planlamak için anlamanız gereken her şeyin temel tanıtımını sağlayacağız. Bu, cron'un temel sözdizimini, crontab dosyasını düzenlemeyi, birkaç örnekle cron ile bir işi planlamayı, cron işini görüntülemeyi vb. içerir.







Cron İşinin 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 inaktif kalır.



Cron İş Sözdizimi

cron işinin sözdizimi aşağıdaki gibidir:





* * * * *emretmek/senaryo

Soldan:

  • İlk * Dakikaya (0-59) karşılık gelir
  • İkinci *, Saatlere (0-23) karşılık gelir
  • Üçüncü * ayın Gününe karşılık gelir (1-31)
  • Dördüncü *, yılın Ayına karşılık gelir (1-12)
  • Beşinci * haftanın gününe karşılık gelir (0-6, Pazardan Cumartesiye)

Bir alanda birden çok değer belirtmek için aşağıdaki operatör simgelerini kullanın:



  1. Yıldız (*): Bir alan için tüm olası değerleri belirtmek için
  2. Kısa çizgi (-): NS s bir dizi değer belirtin
  3. Virgül (,): Bir değerler listesi belirtmek için
  4. Ayırıcı (/): Bir adım değeri belirtmek için

Crontab Dosyasını Düzenleme

Crontab, belirli bir sözdiziminde zamanlanmış işleri içeren bir dosyadır. İki tür crontab dosyası vardır; biri sisteme özel cron işleri, diğeri ise kullanıcıya özel cron işleri için.

Sistem cron işleri

Sistem genelindeki cron işleri şurada bulunur: /etc/crontab dosya ve /etc/cron.d dizin ve bunlar çalıştırılır /etc/cron.saatlik , /etc/cron.günlük , /etc/cron.weekly ve /etc/cron.aylık. 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 /vesaire/crontab

İşte işin sözdizimi /etc/crontab dosya:

# dak sa ayın günü ay haftanın günü kullanıcı adı komutu
* * * * *kullanıcı1ifconfig

Kullanıcıya özel cron işleri

Kullanıcıya özel cron işleri / dizininde bulunur. var / biriktirme / cron / crontabs dizin. 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-Ve

Örneğin, bir test kullanıcısı olarak oturum açtıysanız, crontab -e komutunu çalıştırmak, test kullanıcısı için crontab dosyasını düzenler. 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üzenler.

Başka bir kullanıcı için crontab dosyasını düzenlemek için Terminal'de aşağıdaki komutu verin:

$sudocrontab-u <Kullanıcı adı> -Ve

Örneğin, bir 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 şöyle olacaktır:

$sudocrontab-utest2-Ve

İşte crontab dosyasına eklenebilecek cron işinin sözdizimi:

# m h ayın günü ay haftanın günü komutu
* * * * * ifconfig

Kullanıcıya özel işlerde kayıtlı 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 Geçerli 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 bir kullanıcının crontab dosyasını düzenlemek için
  • crontab -r Geçerli kullanıcının crontab dosyasını kaldırmak için
  • crontab -i Geçerli kullanıcının crontab dosyasını kaldırmadan önce bir istem görüntülemek için

Cron ile İş Planlama

Cron ile belirli bir saat, tarih ve aralıklarla bir işi dakika cinsinden minimum bir birim ile çalıştırabilir, yani her dakika bir işi çalıştırabilirsiniz.

Bir işi cron ile programlamak için önceki bölümde açıklanan 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 kadar aşağı kaydırın ve yukarıda açıklanan sözdiziminde işler ekleyin. Bir dosyadaki her satır bir komutu belirtir. Satırdaki ilk beş giriş, planlanan zamanı belirtir ve son giriş, hangi komut veya betiğin çalıştırılacağını belirtir.

Örnek:

crontab dosyasındaki aşağıdaki satır, cron işini, Pazartesi'den Cumartesi'ye kadar haftanın her günü, 5 saati geçen her 30 dakikada bir komut/komut dosyasını çalıştıracak şekilde programlayacaktır.

* /30 5 * * 1-6emretmek/senaryo

dakika

Bu alanda komutun ne zaman yürütülmesini istediğimizi dakika olarak belirtiyoruz. 0'dan 59'a kadar 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/komut dosyasını çalıştırmasını söyler.

Saat

Bu alanda komutun çalıştırılmasını istediğimiz saatleri belirtiyoruz. 0'dan 23'e kadar belirtilir. Bu alandaki *, işi her saat başı çalıştırmak anlamına gelir. Yukarıdaki crontab satırında, 5 değeri, cron işine belirtilen komutu/komut dosyasını 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/komut dosyasını her gün çalıştırmasını söyler.

Yılın ayı

Bu alanda komutun hangi aylarda çalıştırılacağını belirliyoruz. 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/komut dosyasını ç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. Pazardan Cumartesiye 0 ile 6 arasında belirtilir (Pazar için 0 ve Cumartesi için 6). Bu alandaki *, bir haftadaki her gün anlamına gelir. Yukarıdaki crontab satırında *, cron işine bir hafta içinde her gün belirtilen komutu/komut dosyasını ç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 15 dakikada bir çalışacak şekilde programlamak için crontab dosyasına aşağıdaki satırı ekleyin:

* /on beş * * * *emretmek/senaryo

Her gün sabah 5'te bir cron işi çalıştırın

Bir cron işini her gün sabah 5'te çalışacak şekilde programlamak için crontab dosyasına aşağıdaki satırı ekleyin:

0 5 * * *emretmek/senaryo

Her gün saat 17: 00'de bir cron işi çalıştırın

Bir cron işini her gün 17:00'de çalışacak şekilde programlamak için crontab dosyasına aşağıdaki satırı ekleyin:

0 17 * * *emretmek/senaryo

Her ayın ilk günü sabah 9'da bir cron işi çalıştırın

Bir cron işini her ayın ilk günü sabah 9'da çalışacak şekilde programlamak için crontab dosyasına aşağıdaki satırı ekleyin:

0 9 1 * *emretmek/senaryo

Her 15 Mart'ta her saat başı bir cron işi çalıştırın

Her 15 Mart'ta her saat başı bir cron işi planlamak için crontab dosyasına aşağıdaki satırı ekleyin:

0 * on beş 3 *emretmek/senaryo

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 * * *emretmek/senaryo

Her 15 dakikada bir cron işi çalıştırın

Bir cron işini 15 dakikada bir çalışacak şekilde programlamak için crontab dosyasına aşağıdaki satırı ekleyin:

* /on beş * * * *

Dizeleri Kullanma

Bir işi tanımlamak için aşağıdaki dizeler de kullanılabilir:

  1. @saatlik: Bir işi saatte bir yürütmek için, yani, 0 * * * *
  2. @gece yarısı: Bir işi her gün bir kez yürütmek için, yani, 0 0 * * *
  3. @günlük: gece yarısı ile aynı
  4. @haftalık: Bir işi haftada bir kez yürütmek için, yani, 0 0 * * 0
  5. @aylık: 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 ile aynı
  8. @yeniden başlat: Her başlangıçta bir işi 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/senaryo

Önceden Tanımlanmış Cron Dizinleri

Linux'ta saklanan komut dosyalarının 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 yürütülür.

  • /etc/cron.günlük
  • /etc/cron.saatlik
  • /etc/cron.aylık
  • /etc/cron.weekly

Örneğin, bir betiği ayda bir kez çalıştırmak için onu /etc/cron.monthly dizinine yerleştirmeniz gerekir.

Cron İşlerini Görüntüle

Geçerli 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-NS

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 /vesaire/crontab

Kök kullanıcı olarak oturum açmanız veya komutu sudo olarak çalıştırmanız gerekir.

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, gerçek kullanıcı adıyla değiştirerek Terminal'de aşağıdaki komutu verin:

$sudocrontab-u <Kullanıcı adı> -NS

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 verin:

$ls -NS /vesaire/cron.saatlik

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 -NS /vesaire/cron.günlük/

Haftalık cron işlerini görüntüleyin

Haftalı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 -NS /vesaire/cron.haftalık/

Aylık cron işlerini görüntüleyin

Aylı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 -NS /vesaire/cron.aylık/

Tüm Cron İşlerini Yedekle

Silme durumunda kurtarabilmeniz için tüm cron işlerinin yedeğini bir dosyada tutmanız önerilir. Mevcut tüm işlerin yedeğini almak için, crontab -l çıktısını bir dosyaya yönlendirmek için yeniden yönlendirme operatörünü kullanın.

$crontab-NS >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

İki dosya aracılığıyla crontab komutuna erişimi sınırlayabiliriz: / etc/cron.allow ve / etc/cron.deny.

  • /etc/cron.allow – crontab komutlarına erişim izni vermek istediğiniz kullanıcıları (her satıra bir tane) ekleyin. Bu kullanıcılar zamanlama işlerini çalıştırabilir.
  • /etc/cron.deny – crontab komutlarına erişimini engellemek istediğiniz kullanıcıları (her satıra bir tane) ekleyin. Bu kullanıcılar zamanlanmış işleri çalıştıramaz.

Crontab Sözdizimi Üreticileri

Crontab'lar için sözdizimi oluşturmaya izin veren bazı web siteleri vardır. Bu web siteleri, sözdizimini hatırlamak zorunda kalmadan crontab ifadesi oluşturmayı kolaylaştırır. Sözdizimi oluşturucular için çeşitli web siteleri olmasına rağmen, crontabgenerator.com , crontab-generator.org , ve cronmaker.com . En çok tercih ettiğim ve faydalı bulduğum crontab.gurusu . Kullanıcı girdisine bağlı olarak, crontab dosyasına kopyalayıp yapıştırabileceğiniz bir crontab ifadesi oluşturur.

Çözüm

Bu derste, cron işlerinin temellerini, sözdizimini ve nasıl kurulacağını açıkladık. Ayrıca cron işlerinin nasıl görüntüleneceğini, yedek oluşturmayı ve artık gerekmediğinde bunları kaldırmayı da tartıştık.