Domanda

*/5 * * * * my command

Questa voce funziona ma ogni 5 minuti viene eseguita due volte, perché?

In / var / log / cron mostra:

Jun 16 22:20:01 Test CROND[12512]: (root) CMD (my command)
Jun 16 22:20:01 Test CROND[12516]: (root) CMD (my command)

Quindi non proviene da due utenti.

Viene inserito una sola volta con crontab -e -u root . Il comando è un comando php.

È stato utile?

Soluzione

Nulla nella descrizione spiega perché sia ??eseguito due volte. Guarda altrove.

  • Lo chiamano due utenti?
  • È stato inserito due volte?
  • Si chiama da solo?
  • Si pone in condizioni di movimento per la ripetizione?

Se si sta eseguendo uno script shell, aggiungere whoami e date a un file di registro. Dovresti essere in grado di scoprire il motivo.

UPDATE

Digita ps -A, assicurati che crond non sia in esecuzione due volte.

Altri suggerimenti

La wget in crontab ha spesso un limite di 15 minuti. Nel nostro caso era proprio il caso, e dopo quei 15 minuti il ??lavoro termina con un timeout e quindi viene eseguito di nuovo immediatamente. Quindi, la soluzione a questo era di impostare il cronjob in crontab in qualche modo come questo:

1 2 * * * root wget --read-timeout=3600 -O - 'http://cron-job-url' >/dev/null 2>&1

... anziché

 1 2 * * * root wget -O - 'http://cron-job-url' >/dev/null 2>&1

Quindi, wget è la cosa. Significato 3600 = 1 ora quindi. O più se ne hai bisogno!

Se è un comando per un'applicazione installata, forse ha già aggiunto la stessa voce a / etc / crontab o /etc/cron.d/<something>.

Confermo: anche il mio cron funziona due volte ...

Jul 24 14:40:01 localhost cron[2713]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[9481]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[10724]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20380]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20832]: (root) CMD (/etc/apache2/generator/reloader.do)

Il mio crontab

grep -R / var / spool / -e reloader

/var/spool/cron/crontabs/root:* * * * * /etc/apache2/generator/reloader.do

output di:

whoami
date
------

uscita:

root
root
Tue Jul 24 14:46:02 CEST 2012
---------
Tue Jul 24 14:46:03 CEST 2012
---------

La mia soluzione alternativa attuale è:

if [ -f /etc/apache2/generator/reloader.lock ]
then
exit
fi
touch /etc/apache2/generator/reloader.lock
/etc/apache2/generator/reloader
rm /etc/apache2/generator/reloader.lock

Ma non è la risposta al perché ciò accada ...

Sistema - gentoo Cron - vixie-cron

parte dell'output di ps aux wwf (pranzo all'interno di cron task)

root     10843  0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root     29797  0.0  0.0  25020   964 ?        S    15:08   0:00  \_ /usr/sbin/cron
root     29799  0.0  0.0   9188  1228 ?        Ss   15:08   0:00      \_ /bin/bash /etc/apache2/generator/reloader
root     29822  0.0  0.0  14800   988 ?        R    15:08   0:00          \_ ps aux wwf
------
root      8215  0.0  0.0  16480   836 ?        Ss   14:23   0:00 /usr/sbin/cron
root     31419  0.0  0.0  25020   968 ?        S    15:08   0:00  \_ /usr/sbin/cron
root     31423  0.0  0.0   9188  1228 ?        Ss   15:08   0:00      \_ /bin/bash /etc/apache2/generator/reloader
root     31431  0.0  0.0  14804  1004 ?        R    15:08   0:00          \_ ps aux wwf

EDIT:

Ho notato che uno dei cron process riporta Jun06 come data di inizio (oggi è Jun24)

root     10843  0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root      8215  0.0  0.0  16480   836 ?        Ss   14:23   0:00 /usr/sbin/cron

Rapporto sul secondo processo correttamente (il tempo di funzionamento del server è di ~ 40 minuti - l'ho riavviato di recente) Un'informazione importante: è V-server in esecuzione sul computer host.

Indipendentemente da ciò che faccio (/etc/init.d/vixie-cron restart) inizia con lo stesso PID

RISOLTO:

Ho trovato il motivo. Un V-server è stato eseguito due volte, con un contesto diverso. Possibile spiegazione: qualcuno ha cambiato il contesto mentre la macchina era in esecuzione e, di conseguenza, non tutti i processi sono stati interrotti e, inoltre, hanno influenzato la nuova istanza di vserver (contesto 303 e 3031):

root     10843  3031 developer      0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root     16509   303 developer      0.0  0.0  16480   836 ?        Ss   15:18   0:00 /usr/sbin/cron

Ho terminato il vecchio processo e il problema è stato risolto.

Sicuramente non è la voce crontab a causarne l'esecuzione due volte. Il modo più veloce per scoprire cosa sta succedendo è aggiungere un po 'di debug allo script cron job. Se non fai nulla, per impostazione predefinita l'output cron verrà inviato a root @ localhost (a meno che tu non abbia configurato questo per essere diverso), quindi supponendo che tu abbia accesso come root, aggiungi alcune informazioni di debug allo script , come ad esempio:

echo "Script starting"
date
whoami

e guarda l'output. Questo ti farà iniziare a capire come viene chiamato due volte.

Ho avuto lo stesso problema una volta, nel mio caso era che ho inizializzato il servizio cron due volte per errore. Dopo aver fermato cron # /etc/init.d/crond stop e averlo riavviato # /etc/init.d/crond start , ha funzionato perfettamente.

Spero che questo possa aiutare chiunque.

Sembra che tu abbia due crond in esecuzione, uno con PID 12512 e uno con PID 12516.

Uso OpenWrt.

Ho lo stesso problema, ma ho solo un cron: ps | grep crond:

31447 root      1508 S    /usr/sbin/crond -c /etc/crontabs -l 8 
31454 root      1500 S    sh -c ps | grep crond 
31456 root      1496 S    grep crond

logread | grep cron

May 27 13:15:01 decibox cron.info crond[31447]: crond: USER root pid 1594 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2103 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2325 cmd /root/check_connect.php.sh 
May 27 13:25:01 decibox cron.info crond[31447]: crond: USER root pid 2880 cmd /root/check_connect.php.sh

Ho avuto lo stesso problema a causa di una doppia voce nel file conf:

# grep /syslog /etc/rsyslog.conf /etc/rsyslog.d/50-default.conf 
/etc/rsyslog.conf:*.*;auth,authpriv,kern,mail.none      -/var/log/syslog
/etc/rsyslog.d/50-default.conf:*.*;auth,authpriv,kern,mail.none -/var/log/syslog

Commentare chiaramente uno dei 2 risolve il problema

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top