cron.daily i lavori non sono in esecuzione

18

Ho creato 3 lavori cron giornalieri da eseguire.

Di seguito sono riportati i tre che sono posizionati in etc / cron.daily

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' [email protected]

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]

Ho sostituito [email protected] ofcourse con la mia email.

Se eseguo questo cronjob manualmente funziona bene ./nameoffile.sh

Ma non funziona tutti i giorni, quale può essere la causa o come posso controllare questo?

    
posta sonicboom 25.08.2013 - 22:55

7 risposte

5

Esistono due possibili sospetti che di solito causano il mancato rilascio di cron di lavori.

Il primo è un problema di permessi, cioè un utente può eseguire lo script / comando ma il demone cron non può farlo perché il lavoro è nei lavori cron dell'utente sbagliato. Ad esempio, l'utente crea uno script o esegue un comando con privilegi elevati i.e utilizzando sudo , quindi aggiunge lo script / comando testato al suo elenco di lavori cron ( crontab ). Il risultato è che il cron job dell'utente non sarà in grado di eseguire poiché ha bisogno di privilegi elevati.

  • Per inserire un cron job nel tipo crontab dell'utente corrente crontab -e
  • Per inserire un cron job nel tipo crontab di root sudo crontab -e

Il secondo motivo sono i percorsi, per essere sicuri che lo script venga eseguito, l'utente deve aggiungere il percorso completo allo script da eseguire in crontab. Un'altra soluzione sarebbe quella di espandere la variabile PATH degli utenti root inserendo la seguente riga nella parte superiore del loro file crontab:

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

come la wiki della comunità menziona .

Potresti leggere la wiki della comunità su cron in quanto fornisce ulteriori dettagli su quanto sopra.

    
risposta data Stef K 26.08.2013 - 01:00
59

In base alla risposta , il problema giace con l'estensione .sh. Rimuovilo (ad esempio, rinomina il tuo file da rkhunter.sh a rkhunter.

Per confermare esegui il seguente comando run-parts --test /etc/cron.daily

Se il tuo script (rkhunter) è incluso nei risultati, tutto è buono. Per ulteriori informazioni sul comando run-parts, leggi le pagine man su di esso man run-parts

    
risposta data user19366 04.02.2014 - 22:04
11

Nel mio sistema era perché anacron non era installato.

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 )

Quindi installa anacron o rimuovi il test -x / usr / sbin / anacron

    
risposta data Natim 15.09.2014 - 13:57
8

Penso che i file con estensioni siano ignorati.

run:

 run-parts --test /etc/cron.daily

Se non vedi i tuoi script elencati, rimuovi le estensioni .sh e riprova.

    
risposta data rharriso 21.03.2014 - 00:21
4

Aggiungendo alla risposta Stef, dovresti anche assicurarti che abbiano il bit eseguibile:

$ 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

Dovresti essere in grado di eseguirli utilizzando chmod +x filename .

    
risposta data Braiam 26.08.2013 - 01:53
2

Rinomina il tuo file per non avere l'estensione .sh

Per verificare questo è il problema, prova

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

vedrai che non è elencato. Quindi corri:

mv script.sh script

e riprova a elencare. Dovrebbe essere elencato.

    
risposta data Elan Kivity 04.04.2017 - 15:55
0

Non sono riuscito a farlo funzionare con anacron, ho rimosso anacron da /etc/crontab ed eseguito apt remove --purge anacron e funziona subito.

Non capisco perché abbiamo bisogno di due scheduler.

    
risposta data Patrik Laszlo 09.07.2018 - 10:28

Leggi altre domande sui tag