cron.daily işleri çalışmıyor


19

Çalıştırmak için 3 günlük cron işi yarattım.

Aşağıda etc / cron.daily içine yerleştirilen üçü vardır.

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' me@email.com

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" me@email.com

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' me@email.com

Me@email.com adresini elbette e-posta adresimle değiştirdim.

Bu cronjob elle çalıştırırsanız iyi çalışır ./nameoffile.sh

Ancak her gün çalışmaz, nedeni ne olabilir veya bunu nasıl kontrol edebilirim?


2
Cron.daily / weekly / hourly / etc içinde oluşturduğunuz dosyaların çalıştırılabilir olduğundan emin olun
Turgut

Yanıtlar:


6

Genellikle cronişlerin yürütülememesine neden olan iki olası şüpheli vardır .

Birincisi, izin sorunlarıdır, yani bir kullanıcı komut dosyasını / komutu çalıştırabilir, ancak cron arka plan programı iş yanlış kullanıcının cron işlerinde olduğu için çalışamaz. Örneğin, kullanıcı bir komut dosyası oluşturur veya yükseltilmiş ayrıcalıklara sahip bir komut çalıştırır (ör. Kullanarak sudo, daha sonra test edilen komut dosyasını / komutunu cron işleri ( crontab) listesine ekler . Sonuç olarak kullanıcının cron işi yüksek ayrıcalıklara ihtiyaç duyduğu için çalışamayacaktır.

  • Geçerli kullanıcının crontab türüne bir cron işi koymak için crontab -e
  • Kökün crontab türüne bir cron işi koymak için sudo crontab -e

İkinci neden, komut dosyasının yürütüleceğinden emin olmak için kullanıcının crontab'da yürütülecek komut dosyasına tam yolunu eklemesi gerekir. Başka bir çözüm, kök kullanıcı PATH değişkenini crontab dosyasının üstüne aşağıdaki satırı koyarak genişletmektir:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

topluluk wiki'sinden bahsediyor .

Yukarıdakiler hakkında daha fazla ayrıntı sağladığı için cron hakkında topluluk wiki'sini okumak isteyebilirsiniz .


Dosya adını oraya mı koyayım?
sonicboom

Aslında kök için daha önce bir cron işi olmadığını ve ilkinizi yazacağınızı söylüyor ve sonra crontab'ı değiştirmek için bir editör seçmenizi istiyor. Sadece menüden birini seçin (1.bin / ed, vb). Nano'yu seçin, sadece talimatlara dikkat edin.
Stef K

Bu yüzden günde bir kez saat 10'da koşmak için * 22 * ​​* * test> rkhunter.sh koyardım değil mi?
sonicboom

ah harika! şimdi deneyeceğim!
sonicboom

Test nedir> rkhunter.sh ne için?
sonicboom

76

Bu yanıta göre , sorun .sh uzantısıdır. Bunu kaldırın (örneğin, dosyanızı rkhunter.sh'den rkhunter olarak yeniden adlandırın.

Onaylamak için aşağıdaki komutu çalıştırın run-parts --test /etc/cron.daily

Senaryonuz (rkhunter) sonuçlara dahilse, her şey iyidir. Run-parts komutu hakkında daha fazla bilgi için, üzerindeki man sayfalarını okuyunman run-parts


1
Aradığım cevap, çeşitli testlerden sonra, sh uzantısı olmayan başka bir komut dosyasının yürütüldüğünü fark ettim
Albert Català

5
@rharriso'nun cevabında söylediği gibi. ".sh" ile "." ile ilgili bir sorun değildir. herhangi bir uzantıya sahip herhangi bir dosya kaçırılır. man run-parts"isimlerden tamamen alıntı yapmak için tamamen ASCII büyük ve küçük harfler, ASCII rakamları, ASCII alt çizgileri ve ASCII eksi-kısa çizgilerden oluşmalıdır"
kuzey-bradley

11

Sistemimde bunun nedeni anakronun kurulu olmamasıydı.

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Yani ya anacron kurun ya da -x / usr / sbin / anacron testini kaldırın


1
+1 Varsayılan olarak anacron kurulu değil mi? Bunu beklerdim. Bunun benim için çözeceğini düşünüyorum. Teşekkürler.
lepe

Tabii ki, benimki orada değildi .. FFS, eminim WAS, birkaç ay önce senaryo yürütülürken !: dpkg --get-selections | grep cron.. <
swears

Evet, genellikle başlangıçta kurulan bir paket olduğu için ne olduğunu bilmiyorum.
Natim

10
Bu gerçekten doğru değil. anacrongerekli değil; ||crontab operatör yürütür komutları run-partsanacron yüklü DEĞİLDİR zaman. Kurulduğunda anacron, günlük / haftalık / aylık run-partskomutları gereksiz kılar .
TalkLittle

Belki de pist parçaları çalışmadığı için olabilirdi? Her durumda anacron takmak benim için düzeltti.
Natim

10

Bence uzantıları olan dosyalar yok sayılır.

Çalıştırmak:

 çalışma parçaları --test /etc/cron.daily

Komut dosyalarınızı listede görmüyorsanız .sh uzantılarını kaldırın ve tekrar deneyin.


5

Stef cevabına ek olarak, yürütülebilir bite sahip olduklarından da emin olmalısınız:

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

Bunları kullanarak çalıştırabilmelisiniz chmod +x filename.


Bunlar hangi dosyalar? /etc/logrotate.d klasörünün içeriği nedir?
realtebo

4

Dosyanızı .sh uzantısına sahip olmayacak şekilde yeniden adlandırın

Sorunun bu olduğunu doğrulamak için şunu deneyin:

sudo run-parts --list /etc/cron.daily 

listede olmadığını göreceksiniz. Öyleyse çalıştırın:

mv script.sh script

ve tekrar listelemeyi deneyin. Listelenmelidir.


Bu sorunlar, uzantısı olan herhangi bir yürütülebilir dosyayı etkiliyor gibi görünüyor. Bir dosya adları "filename.ca" vardı ve ben de "dosya adı" olarak yeniden adlandırılana kadar da listeler olmaz
kiwicomb123

0

Anacron ile çalıştıramadım, anacronu kaldırdım /etc/crontabve idam apt remove --purge anacronettim ve hemen çalışıyor.

Neden iki programlayıcıya ihtiyacımız olduğunu anlamıyorum.


0

Bugün aynı durum burada

yaptım

sudo journalctl -u cron -b | grep -i error

ve bulundu

cron[815]: Error: bad hour; while reading /etc/crontab
cron[815]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

Birinin (ben !!!!) ile başlayan bir satır eklediğini keşfettim

20 38 ...

ve açıkçası 38. saat yok!

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.