cron'un test / hata ayıklama için şu anda bir işi yürütmesini nasıl sağlayabilirim? programı değiştirmeden!


133

Planlamayı değiştirmek dışında, her gün çalışması planlanan bir cron işim var, şu anda komutun test edilmesini istediğim gibi çalışıp çalışmadığını görmek için başka bir yol var mı?


Sorunu anlamıyorum? Neden sadece komutu çalıştırmıyorsunuz?
favadi

20
Komutun kabuğa (kabuğum) girdiğinde cronçalıştığını biliyorum, ancak çalıştığında çalışıp çalışmadığını bilmek , ENV'den etkilenebileceğini veya belirli nesnelere ( ~genişleme) veya sahiplik ve izin malzemesinden etkilenebilir veya ...
Ali,

2
Öyleyse neden her dakika aynı komutla çalıştırılan yeni bir cron işi yaratmıyorsunuz?
favadi

13
Yaptığım şey tam olarak buydu, ama merak ediyorum 7 numaralı işte deneme sınavı yapmak istediğinizi söylemenin bir yolu var mı! Şüphesiz başkaları daha önce bu sorunu / isteği / dileği yaşardı!
Ali,

4
Buraya google aracılığıyla sahneye çok geç kaldı, ancak favadi'nin cevabı hakkında yanlış olan her şey vardı. Bunu yapmak için crondan ve crontab'ı düzenlemeden özel olarak test etmek istediği açıktı. Kullanım durumunu anlamaya çalışmadığında, ne istediğinizi söyleyen birinden daha kötü.
HörmannHH

Yanıtlar:


32

Bildiğim kadarıyla doğrudan bunu yapmanın bir yolu yoktur, çünkü cronun özel bir amacı vardır - belirli bir zamanda çalışan programlar komutları. Bu nedenle en iyisi, bir crontab girdisini elle oluşturmak veya çevreyi kaldıran ve sıfırlayan bir komut dosyası yazmaktır.


57

Crontab'ı aşağıdaki komutla çalışmaya zorlayabilirsiniz:

run-parts /etc/cron.daily

9
... OP'nin cron işinin (3 yıl önce sorulduğu), bireysel crontab'ın aksine günlük olarak gerçekleştiği varsayımıyla.
Jeff Schaller

18
Ancak bu, cron kullanıcısının ortamını tam olarak simüle etmemektedir, bu yüzden, muhtemelen betiğinizi gerçek bir cron işi olarak çalıştırdığınızda PATH'iniz ve diğer ortamlarınız yaptığınız kullanıcıdan farklı olabilir run-parts /etc/cron.daily. Şu an bu hatayı alıyorum, çünkü betiğim iyi çalışacak run-partsancak aslında cron kullanıcısı altında çalıştığında hata çıkacaktır .
ArtHare

42

Cron kullanıcı ortamını "Bir cron işini manuel olarak ve hemen çalıştırma" bölümünde açıklandığı şekilde simüle edebilirsiniz . Bu, işin cron kullanıcısı olarak çalıştırılacağı zaman çalışmasını test etmenizi sağlar.


Bağlantıdan alıntı:


Adım 1 : Bu satırı geçici olarak kullanıcının crontab'ına koydum:

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

daha sonra dosya yazıldıktan sonra çıkardı.

Adım 2 : Kendimi içeren bir cron ash bash betiği yaptım:

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

Böylece, söz konusu kullanıcı olarak yapabildim.

run-as-cron /the/problematic/script --with arguments --and parameters

Yararlı numara. Tabii ki, emrinizde yüzde işareti var ise bu işe yaramaz.
temel6,
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.