J'avais l'habitude crontab -e
d'ajouter la ligne suivante à mon crontab:
* * * * * echo hi >> /home/myusername/test
Pourtant, je ne vois pas que le fichier de test est écrit. Est-ce un problème d'autorisation ou crontab ne fonctionne-t-il pas correctement?
Je vois que le processus cron est en cours d'exécution. Comment puis-je déboguer cela?
Edit - Ask Ubuntu a une belle question sur crontab , malheureusement cela ne m'aide toujours pas.
Edit 2 - Hmm, il semble que mon fichier de test ait 214 lignes, ce qui signifie que pour les 214 dernières minutes, il a été écrit à chaque minute. Je ne sais pas quel était le problème, mais il est évident qu'il a disparu.
fcron
fait cela aussi.Avez-vous ajouté une ligne vide après votre cronjob ?
la source
J'ai eu le même problème - un crontab de travail s'est soudainement arrêté après avoir ajouté une nouvelle entrée à la fin. Il s'est avéré que j'avais oublié de mettre une nouvelle ligne après cette dernière ligne.
J'ai découvert en lançant la commande
et la sortie a montré le problème:
L'ajout de la nouvelle ligne et l'enregistrement ont résolu le problème.
la source
Cela semble fixe. La prochaine fois, essayez également de connecter le STDERR. Les éléments suivants ne se connecteront qu'à STDOUT, pas à STDERR:
Essayez de vous assurer qu'il existe également une clause explicite pour STDERR. Sinon, STDERR peut être envoyé par e-mail à l'utilisateur (en supposant que l'e-mail fonctionne) ou ne peut aller nulle part, selon la configuration de Cron.
Ma préférence est d'envoyer la sortie cronjob à syslog. De cette façon, je profite de toute infrastructure syslog existante (syslog centralisés, Splunk, rotation des journaux déjà prise en charge, il est facile de comparer les messages dans / var / log / messages & / var / log / cronjob, etc.), et je ne le suis pas spammer les administrateurs système (moi) avec des e-mails inutiles.
la source
Pour moi, le problème était que le script n'était pas exécutable. J'avais une configuration crontab -e comme celle-ci
Et le fichier myscript n'était pas exécutable donc j'ai couru
Immédiatement, j'ai commencé à voir la sortie comme prévu.
la source
Votre ligne cron fonctionne bien sur mon ordinateur lorsque je passe
myusernae
àphunehehe
. Il existe plusieurs façons de découvrir ce qui ne va pas avec votre système.Cron envoie généralement des messages à l'utilisateur en cas de problème. Si vous voyez le message "Vous avez du courrier", utilisez un client de messagerie pour vérifier votre boîte de réception . Ou, vérifiez dans votre répertoire personnel, il peut y avoir un fichier nommé
dead.letter
là-bas.Vous pouvez vérifier les
/var/log/
entrées relatives à cron. Sur mon ordinateur, le fichier journal est à/var/log/cron/current
(nécessite un accès root).Si vous avez un accès root, vous pouvez arrêter le démon cron et le démarrer en mode débogage. Par exemple, j'utiliserais (changer
fcron
le nom de votre démon):la source
ps -ef | grep cron
et vous devriez voir une ligne pour votre cron. Consultez la page de manuel du cron pour voir l'indicateur de débogage. Il est probable que vous utilisez Vixie Cron , dans ce cas, le drapeau de débogage est-x
. Tuez le processus cron et redémarrez-le avec le drapeau supplémentaire.Très probablement, lorsque cron échoue, il génère un e-mail à l'ID utilisateur du travail cron sur cet ordinateur. Si aucun MTA ne fonctionne sur votre ordinateur ou si vous ne lisez pas ou ne transférez pas ce courrier ailleurs, vous ne verrez pas ce message, même si le MTA fonctionne.
Un bon moyen d'obtenir les erreurs de votre crontab par courrier est de faire ressembler votre crontab à ceci:
De toute évidence, utilisez votre adresse e-mail plutôt que [email protected]. Cela indique à cron d'envoyer des erreurs à votre adresse e-mail plutôt qu'au compte local. En particulier, cela est utile si vous avez une crontab racine (ou un fragment crontab dans /etc/cron.d) que vous souhaitez simplement vous envoyer une sortie, vous pouvez éviter de spammer la boîte aux lettres de la racine ou l'adresse de transfert de la racine.
la source
Je suppose que l'une des raisons peut être que le répertoire / home / est crypté et que lorsque l'utilisateur est déconnecté, cron ne peut rien faire dans ce répertoire.
voir: https://stackoverflow.com/a/40354269/1279002
la source