Question

*/5 * * * * my command

Cette entrée fonctionne mais toutes les 5 minutes, elle est exécutée deux fois, pourquoi?

Dans / var / log / cron , il est indiqué:

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

Donc, ce n'est pas à partir de deux utilisateurs.

Il n'est saisi qu'une seule fois avec crontab -e -u root . La commande est une commande php.

Était-ce utile?

La solution

Rien dans la description ne justifie son exécution deux fois. Regardez ailleurs.

  • Deux utilisateurs l'appellent-ils?
  • Est-ce entré deux fois?
  • Est-ce que cela s'appelle lui-même?
  • Cela crée-t-il des conditions de mouvement pour la répétition?

S'il s'agit d'un script shell que vous exécutez, faites-le ajouter whoami et date à un fichier journal. Vous devriez pouvoir trouver la raison.

MISE À JOUR

Tapez ps -A, assurez-vous que crond ne s'exécute pas deux fois.

Autres conseils

La limite de temps de travail dans crontab est de 15 minutes. Dans notre cas, c'était exactement le cas, et après ces 15 minutes, le travail se termine par un délai d'expiration, puis est relancé immédiatement. La solution à cela était donc d’installer la tâche cron dans crontab un peu comme ceci:

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

... au lieu de

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

Donc, wget est la chose. Sens 3600 = 1 heure alors. Ou plus si vous avez besoin!

S'il s'agit d'une commande pour une application que vous avez installée, elle a peut-être déjà ajouté la même entrée à / etc / crontab ou /etc/cron.d/<something> .

Je confirme - mon cron a également fonctionné deux fois ...

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)

Ma crontab

grep -R / var / spool / -e reloader

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

sortie de:

whoami
date
------

sortie:

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

La solution actuelle est la suivante:

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

Mais ce n'est pas la réponse pour laquelle cela se produit ...

Système - gentoo Cron - vixie-cron

partie de la sortie ps aux wwf (prévue dans la tâche périodique)

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:

J'ai remarqué qu'un des rapports de processus cron du mois de juin 2006 était la date de début (nous sommes le 24 juin)

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

Le deuxième rapport de processus est correct (l’autonomie du serveur est d’environ 40 minutes - j’ai redémarré récemment) Une information importante - il s’agit du serveur V qui tourne sur la machine hôte.

Quoi que je fasse (/etc/init.d/vixie-cron restart), cela commence par le même PID

RESOLU:

J'ai trouvé la raison. Un serveur virtuel a été exécuté deux fois, avec un contexte différent. Explication possible - quelqu'un a changé le contexte pendant que la machine était en marche et, par conséquent, tous les processus n'ont pas été tués, et plus encore - ils ont affecté la nouvelle instance de vserver (contextes 303 et 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

J'ai un ancien processus TERM et le problème est résolu.

Bien sûr, ce n’est pas l’entrée crontab qui le fait fonctionner deux fois. Le moyen le plus rapide de savoir ce qui se passe est d’ajouter du débogage au script de travail cron. Si vous ne faites rien, alors la sortie cron sera envoyée par défaut à root @ localhost (sauf si vous l'avez configurée de manière différente). En supposant que vous ayez un accès root, ajoutez des informations de débogage au script. , tels que:

echo "Script starting"
date
whoami

et regardez la sortie. Cela vous aidera à savoir comment on appelle deux fois.

J'ai eu le même problème une fois, dans mon cas, j'ai initialisé le service cron deux fois par erreur. Après avoir arrêté cron # /etc/init.d/crond stop et le redémarré # /etc/init.d/crond start , cela a parfaitement fonctionné.

J'espère que cela peut aider n'importe qui.

On dirait que vous avez deux clients en marche, l'un avec le PID 12512 et l'autre avec le PID 12516.

J'utilise OpenWrt.

J'ai le même problème, mais je n'ai qu'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

J'ai eu le même problème en raison d'une double entrée dans le fichier de configuration:

# 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

Commenter clairement l'un des 2 résout le problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top