Ubuntu-Desktop'ımda ve debian-server'ımda, her dakika çalıştırılması gereken bir betiğim var ( alanımın internet tarayıcısındaki dakikasını çağıran bir betik ).
Sorun debian türevlerinde cron'un /var/log/syslog
her çalıştırışında günlüğe kaydetmesidir . Sonunda, tekrar tekrar yürütüldüğü mesajı tekrarlayan olarak görüyorum /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Bir programın çıktısını bastırmak için yeniden yönlendirebileceğimi biliyorum /dev/null
, örneğin bir programdaki tüm hata ve uyarı mesajlarını gizlemek için crontab'da böyle bir satır oluşturabileceğimi biliyorum
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Ancak bir cronjob çalıştırmak ve üretilen tüm çıktıların veya hataların NULL'a aktarıldığından emin olmak istiyorum, böylece syslog'da herhangi bir ileti oluşturmaz ve herhangi bir e-posta oluşturmaz
EDIT:
cron-log'larını değiştirerek burada önerilen şekilde ayrı bir log'a yönlendirmek için bir çözüm var./etc/syslog.conf
Ancak dezavantajı, daha sonra tüm cronjobs'ların ALL çıktısının yönlendirilmesidir.
Her nasılsa, tek bir cronjob'ı ayrı bir günlük dosyasına yönlendirebilir miyim? Tercihen, cron.hourly
dosyanın içinde yapılandırılabilir .
MAILTO=""
crontab'ın 1. satırı e-postaları engelleyeceğinden. Ayrıca, tüm çıktıları bastırıyorsanız, komut satırlarınızdaki tam üçlüyü kullanın. Her 3 tür de bu dizeyle yönlendirilir: >/dev/null 2>&1
- Tabii ki, komut dosyasının ayrı bir günlüğe yazması için düzenli yazılar yazabilirsiniz.
MAILTO=""
cron dosyasının başına da koyabilirsiniz . Bu, tüm e-postaları bastırır. Ve syslog'a iş çıktısı gönderen bir cron daemonunu hiç duymadım (ama sanırım mümkün).