Come faccio a sapere perché cron non esegue i miei lavori?


15

Sto usando Ubuntu 14.04 e il demone cron è in esecuzione:

# ps ax | grep cron
822 ?        Ss     0:00 cron

ma non sta eseguendo alcun lavoro. In precedenza stavo ricevendo voci /var/log/syslogcome questa:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

ma ora non ci sono voci relative a cron. Stavo anche ricevendo voci come questa in /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

ma di nuovo, ora non ci sono voci relative a cron.

Non sono consapevole che qualcosa è cambiato. Ho provato a riavviare cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Ho provato a usare crontab -eper aggiungere un lavoro cron * * * * * date >> /tmp/somefileche ha funzionato, ma ha installato un nuovo crontab /var/spool/cron/crontabs/root, mentre voglio che cron utilizzi il file /etc/crontab.

C'è qualche opzione di debug che posso usare o un registro da qualche parte che potrebbe dare un messaggio di errore che posso esaminare?


1
Cosa visualizzato in crontab -l?
user345352353

no crontab for root.
jl6

Credo che se fai solo un po 'di ricerche su questo sito SE avrai una risposta. Questo è un problema abbastanza comune.
mdpc,

I croni recuperati usando il crontabcomando ( -lswitch) dipendono dall'utente, mentre /etc/crontabvengono usati per memorizzare i croni a livello di sistema. Per questo motivo, le attività salvate /etc/crontabnon verranno visualizzate in nessuno crontab -l.
John WH Smith,

Risposte:


4

Per aiutarti ulteriormente a eseguire il debug di ciò che non va nei tuoi cronlavori, dovresti controllare la tua posta. Questo è di solito memorizzato in un file come /var/mail/<user_name>o /var/spool/mail/<user_name>.

Questi due file sono in realtà collegamenti fissi sulla mia casella Debian, ma non so se sia standard.

Spiegazione

Dalla cron(8)pagina:

Quando si eseguono comandi, qualsiasi output viene inviato al proprietario del crontab (o all'utente nominato nella variabile d'ambiente MAILTO nel crontab, se esiste).


Ho controllato la posta; nessuno viene generato, né esiste un file dead.letter.
jl6

0

Hai dimostrato che non esiste crontab per root, ci sono utenti con una voce crontab? Se stai usando solo root, puoi anche controllare le seguenti directory: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

sulla mia macchina (centos 6.4) ho mlocate.cron all'interno della directory /etc/cron.daily/ e cron esegue lo script quotidianamente.

quindi penso che devi solo aggiungere cron job.


Ma c'è un file crontab in /etc/crontab. Forse la domanda è: perché non crontab -llo riconosce?
jl6

0

Ho risolto questo cambiando le autorizzazioni su /etc/crontabquanto segue:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

In precedenza lo era -rw-rw-r--. Questo è stato l'unico cambiamento. Non funzionava, ora lo è. Non so ancora perché.


1
Il crontab root eseguirà qualsiasi comando come root. Le autorizzazioni che consentono l'accesso in scrittura a non root sarebbero considerate una falla di sicurezza.
ChuckCottrill,

@ChuckCottrill: Ma il bit di scrittura del gruppo avrebbe dato accesso in scrittura solo a quelli del gruppo root - che presumibilmente sono solo utenti root?
jl6,

0

Ho anche avuto un tipo simile di problema, ma dopo aver specificato la radice come utente sul /etc/crontab, il processo cron ha iniziato a innescarsi.

Potrebbe essere dovuto alla sintassi seguita su crontab -equale è diverso da /etc/crontab.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.