Her Dakikada Bir Cron İşi Çalıştırın

Run Cron Job Every Minute



Linux'ta arka planda bir program veya komut dosyası çalıştırmak istiyorsanız, cron işi çok önemlidir. Cron işleri yardımıyla belirli bir zaman aralığından sonra arka planda bir program veya script çalıştırabilirsiniz.

Şimdi cron işlerinin gerçek hayattan bazı örneklerine bir göz atalım.







  • Diyelim ki bir web siteniz var ve web sitenizin tüm kullanıcılarına her gün bir e-posta göndermek istiyorsunuz. Tek yapmanız gereken, bir e-posta gönderme komut dosyası yazmak ve bu komut dosyasını her gün çalıştırmak için bir cron işi ayarlamak.
  • Diyelim ki bir reklam ajansınız var ve bakiyesi 5 doların altında olan tüm reklamverenlere yeniden şarj etmelerini hatırlatmak istiyorsunuz. Tek yapmanız gereken, tüm reklam verenlerin bakiyesini kontrol eden bir komut dosyası yazmak ve 5 doların altına düştüğünde, reklamverenin cep telefonu numarasına veya e-postasına bir bildirim gönderecek. Ardından, komut dosyasını her 5 ila 10 dakikada bir veya saatte bir çalıştırmak için bir cron işi ayarlayın.

Linux'ta cron işlerinin başka birçok kullanımı vardır.



Bu yazımda size Linux üzerinde her dakika cron işlerini nasıl çalıştıracağınızı göstereceğim. Gösteri için Debian 9 Stretch kullanacağım. Ancak, seçtiğiniz herhangi bir modern Linux dağıtımını kullanabilirsiniz. Başlayalım.



Linux'ta olmak zorunda değilsiniz kök cron işlerini çalıştırmak için. Herhangi bir kullanıcı olarak cron işlerini çalıştırabilirsiniz. Linux'taki her kullanıcı bir crontab kendi cron işlerini çalıştırmak için dosya.





Varsayılan olarak, bir kullanıcının bir crontab Linux'ta dosya. bir crontab aşağıdaki komutla dosya:

$crontab-Ve



Bu komutu ilk kez çalıştırıyorsanız, listeden bir metin düzenleyici seçmeniz istenmelidir. seçeceğim nano , varsayılan olan. Beğendiğinizi seçebilirsiniz. İşiniz bittiğinde, tuşuna basın .

NS crontab dosyası oluşturulmalı (önceden mevcut değilse) ve favori metin düzenleyicinizle açılmalıdır. Artık bu dosyanın sonuna kendi cron işlerinizi ekleyebilirsiniz ve mutlu olduğunuzda, sadece kaydedin ve metin düzenleyiciden çıkın.

Her Dakikada Bir Komut Çalıştırmanın Sözdizimi:

sözdizimi crontab dosya aşağıdaki gibidir:

dakika saat dayOfMonth ay dayOfWeek komutuToRun

Buraya,

  • dakika olabilir 0 ile 59 .
  • saat Ayrıca olabilir 0 ile 59 .
  • ayın günü olabilir 1 ile 31 .
  • ay olabilir 1 ile 12 .
  • haftanın günü olabilir 0 ile 7 . 0 ve 7 Pazar demek, 1 Pazartesi demek, 2 Salı ve benzeri anlamına gelir.

çalıştırmak için komutToRun her dakika komut verin, bunu yazmalısınız. crontab dosya şu şekilde:

* * * * *komutToRun

Her Dakikada Bir Crob İşi Çalıştırmak:

Artık teorileri bildiğimize göre, basit bir komut dosyası ekleyelim. timer.sh için crontab dosya ve nasıl yönetileceğini görün.

İçinde timer.sh komut dosyası, yalnızca aşağıdaki kod satırlarına sahibim. Tek yaptığı yeni bir dosya oluşturmak /home/shovon/bin/timer.log (zaten yoksa) ve date komutunun çıktısını buna ekler.

Şimdi scriptimizi dosyamıza ekleyelim. crontab ve aşağıdaki satırla her dakika çalışmasına izin verin:

* * * * * /ev/Şovon/NS/timer.sh

Bir kez kaydettiğinizde crontab dosya ve metin düzenleyiciden çıkın, yeni crontab dosyası kurulmalıdır.

Bir dakika geçtikten sonra yeni bir dosya zamanlayıcı.log Aşağıdaki ekran görüntüsünün işaretli bölümünde de görebileceğiniz gibi istenilen dizinde oluşturulur.

itibaren zamanlayıcı.log günlük dosyası, betiğin timer.sh her dakika çalışır.

Cron İşlerinden Hata Yakalama:

Bir cron işindeki hataları yakalamak için, hataları bir hata.log dosya ve normal çıktılar erişim.log örneğin dosya. Elbette dosyaları istediğiniz gibi adlandırabilirsiniz.

Bunu göstermek için senaryomu değiştirdim timer.sh birazcık. Şimdi hatalar gönderiliyor hata.log dosya / ana sayfa / shovon / çöp kutusu dizine gönderilir ve çıktılar erişim.log içinde / ana sayfa / shovon / çöp kutusu dizin.

ilk başta /tmp/i_must_be_burada dosya mevcut değil, bu yüzden hatayı alıyorum hata.log Gördüğünüz gibi dosya.

NS erişim.log dosya şu anda boş.

Şimdi dosyayı oluşturacağım /tmp/i_must_be_burada

Ve gördüğünüz gibi, çıktı erişim.log şimdi dosya.

İsterseniz çıktıyı ve aynı dosyadaki hataları aşağıdaki gibi yönlendirebilirsiniz:

Görüldüğü gibi STDIN ve STDERR çıkışları bilgisayara gönderilmektedir. çıkış.log dosya.

İşi Tekrar Çalıştırmadan Önce Son İşin Bittiğinden Emin Olmak:

Bunun çalışması için, iş başladıktan hemen sonra geçici bir dosya oluşturabilir ve bitmeden hemen önce kaldırabilirsiniz. Ardından, işe başlamadan önce geçici dosyanın var olup olmadığını kontrol edebilirsiniz. Varsa, işten çıkabilir ve işi yalnızca geçici dosya kullanılamadığında çalıştırabilirsiniz.

Bu basit komut dosyası tam da bunu yapıyor.

Gördüğünüz gibi, timer.pid dosya oluşturulur.

okumak erişim.log dosyası, önceki cron işinin çalışması bitmeden cron işinin çalışmadığını kanıtlar. Gördüğünüz gibi, 01:32:01'de çalıştı ve bir sonraki sefer 01:33:01'de çalışması gerekiyordu, ama olmadı. Bunun yerine, yaklaşık 3 dakika sonra 01:35:01'de çalıştı.

Kolay Hata Ayıklama için Cron İş Çıktılarını Düzenleme:

Çıktıları, cron işinizi hata ayıklamayı kolaylaştırmak için güzel bir şekilde biçimlendirebilirsiniz.

Bunun nasıl yapılabileceğine dair bir örnek aşağıdaki komut dosyasında verilmiştir.

Gördüğünüz gibi çıktılar, hatalar ve başarı mesajları günlük dosyasında güzel bir şekilde yazdırılıyor.

cron işleri ve kabuk betikleri ile harika şeyler yapabilirsiniz. Burada bazı fikirleri gösterdim. Ama gökyüzü senin sınırın. Sahip olduğunuz herhangi bir fikirle denemekten çekinmeyin. Bu makaleyi okuduğunuz için teşekkürler.