Yeni bir cron betiğini nasıl test edebilirim?


14

Birkaç farklı Linux dağıtımında (Fedora 11, CentOS 5 ve SuSE 10.2) çalışıyorum ve genellikle komut satırından doğrudan çağrıldığında cron işi olarak çalıştırmak istediğim yeni bir komut dosyasının iyi çalıştığı bir soruna giriyorum, ancak PATH veya diğer gerekli ortam değişkenlerindeki küçük değişiklikler nedeniyle cron'dan çağrıldığında başarısız olur.

Tüm crontab'ı çalıştırmak veya cron.daily / .hourly vb. Dizinini çalıştırmak için run-parts kullanmak zorunda kalmadan sanki cron'dan çalıştırılıyormuş gibi tek bir komut dosyasını çalıştırmak için test edebileceğim bir yol var mı? Önümüzdeki birkaç dakika içinde komut dosyasını çalıştırmak için crontab'ımı geçici olarak düzenleyebilirim, ancak crontab'ı bozma riskini ortadan kaldırmak için daha bağımsız bir çözümüm olmasını tercih ederim.

Yanıtlar:


9

Gönderen google arama üzerinepath in crontab

root@pingu # cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Temelde PATH ayarlamak ve sonra varyasyonlar hakkında endişelenmenize gerek yok. Ayrıca, hızlı test, komut dosyanızı aynı ortam değişkenlerini kullanarak tüm kutularınızda SSH üzerinden çalıştırmaktır.


Teşekkürler, crontab'ın crontab içindeki ortam değişkenlerini bildirebileceğiniz bir komut dosyası gibi olduğunu düşünmemiştim.
gareth_bowles

7

Bireysel olarak planlanmış bir cron işi (crontab'da ayrı bir satır) çalıştırıyorsam, bunu test ederken her dakika veya diğer her dakika için planlayacağım. Test edildikten sonra, istediğim frekansta çalışacak şekilde crontab satırını düzenleyeceğim.

Bir yan not olarak, eğer cronun kendisinin düzgün çalıştığını test etmek ve sonuçları doğru adrese (ÇOK önemli) e-postayla göndermek istiyorsanız, aşağıdaki satırı / etc / crontab'a ekleyeceğim:

 * * * * * root ls /doesnotexistfoobar

Her dakika çalışır ve bir ls dizinde . Her dakika bir hata mesajı göndermelidir. Çalıştırdığımda hattı yorumluyorum.

Sorunuza geri dön: Muhtemelen mevcut cron işini sık sık çalışacak şekilde değiştirmek istemezsiniz, hem onu ​​geri değiştirmeyi unutma şansı olduğundan hem de cron.hourly, cron.daily veya cron'u çalıştırdığınız için orada ne olduğuna bağlı olarak yan etkileri olabilir. Komut dosyasını cron'dan çağrıldığında aynı ortamda çalıştırdığınızdan emin olmak için yukarıdaki "ls" numaramı değiştirmenizi tavsiye ederim:

Komut dosyasını doğrudan çalıştırmak için crontab'ınıza bir satır ekleyin:

 * * * * * root /etc/cron.hourly/customscript

Bu şekilde, test etmeniz gereken sıklıkta çalıştırabilirsiniz.


Teşekkürler - buna doğru cevap olarak oy verebilseydim, yapardım!
09:14

0

Daha doğrudan bir çözüm bilmiyorum, ancak senaryonuza özel olan bir kullanıcı (örneğin, crontest) oluşturabilir ve 'crontest' kullanıcısı için kullanıcıya özel crontab'ı kullanarak komut dosyalarını düzenleyebilirsiniz betiğin önümüzdeki birkaç dakika içinde çalışmasını sağlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.