Comment définir un crontab emploi pour un script perl
J'ai un script Perl qui je veux exécuter toutes les 4 heures par cron. Mais de toute façon il ne parvient pas à exécuter par le biais de cron et fonctionne très bien si je le lance en ligne de commande. Voici la commande que j'ai mis dans la crontab:
perl -q /path_to_script/script.pl > /dev/null
Aussi, quand je lance cette commande dans l'invite de commande, il ne les exécute pas, mais quand je vais dans la feuille dossier dans path_to_script
et exécuter le fichier, il fonctionne très bien.
Aussi, où les fichiers journaux de cette tâche cron être créé afin que je puisse les consulter?
Je suppose que vous avez le cron champs de l'heure de l'installation correctement, et que vous les avez laissés de côté? I. e. vous NE savez pas que vous avez à écrire comme ça"* */4 * * * commande" dans votre fichier crontab, hein?
Vous pouvez avoir la variable d'environnement PATH n'est pas configuré dans votre crontab. Mis chemin d'accès complet à perl exécutable dans votre chaîne et voir si ça aide
Qu'est-ce que
Lorsque vous déboguez votre script cron, de ne pas envoyer ses éventuellement utile de sortie vers /dev/null.
Vous pouvez avoir la variable d'environnement PATH n'est pas configuré dans votre crontab. Mis chemin d'accès complet à perl exécutable dans votre chaîne et voir si ça aide
Qu'est-ce que
perl -q
censé faire? Je reçois le message d'erreur Unrecognized switch: -q
Lorsque vous déboguez votre script cron, de ne pas envoyer ses éventuellement utile de sortie vers /dev/null.
OriginalL'auteur Deepak | 2012-03-24
Vous devez vous connecter pour publier un commentaire.
Vous devrez probablement changer le répertoire de travail "feuille de dossier".
Essayer dans votre commande crontab:
Wrt. les fichiers journaux. Cron, vous recevrez par la poste la sortie. Mais depuis que vous avez envoyé sur la sortie standard vers /dev/null, seulement stderr sera envoyé à vous.
Si vous voulez la sortie enregistrées dans un fichier journal, puis de rediriger la sortie d'erreur stderr/stdout sortie du script dans un fichier, comme ceci:
Je ne peux répondre que pour la main dans un commentaire. Je suis sûr d'une recherche sur Google entraînera beaucoup d'exemples de cela.
Il y a des réponses à l'e-mail question déjà sur Stackoverflow. 🙂
OriginalL'auteur Weston
Généralement cron va vous envoyer du courrier avec la sortie de votre programme. Quand vous êtes à essayer de le comprendre, vous voulez probablement pour vérifier l'environnement. Il ne sera pas nécessairement le même environnement que votre shell de connexion (puisqu'il n'est pas un shell de connexion):
Si vous êtes en manque de quelque chose dont vous avez besoin, de le fixer dans votre crontab:
Si vous avez besoin pour commencer dans un répertoire particulier, vous devriez chdir. Le répertoire de départ à partir d'une tâche cron n'est probablement pas ce que vous pensez. Sans argument, chdir des modifications à votre répertoire d'accueil. Cependant, parfois, les variables d'environnement peuvent ne pas être mis dans votre cron session, de sorte qu'il est probablement mieux d'avoir une valeur par défaut:
À différents points critiques, vous devriez donner la sortie d'erreur. C'est une bonne chose, même dans la non-cron programmes:
Si vous rediriger les choses à /dev/null, vous perdez tous les renseignements susceptibles de vous aider à résoudre le problème.
OriginalL'auteur brian d foy
dirait que vous avez manqué le
au début de votre script perl qui est pourquoi vous pourriez avoir besoin de perl -q pour l'exécuter
une fois que vous avez ajouté cette ligne, vous pouvez l'exécuter directement à partir de la ligne de commande à l'aide de
perl
sur la ligne de commande, vous n'avez pas besoin de la ligne shebang.vrai, ou, si vous mettez le shebang là vous n'avez pas besoin de perl -q 🙂 et puis vous n'avez pas à garder à l'écrire à chaque fois que vous appelez le script. Plus le script d'appel de destination finale est cron pas la ligne de commande, où vous pouvez bien sûr écrire du perl -q une fois de plus, si vous le souhaitez. la sémantique r us. 🙂
Vous n'avez jamais besoin de l'-q. Ce n'est pas un perl commutateur.
vous êtes donc à droite -q n'est pas un perl commutateur, ma folie pour copier les OP de l'échantillon.
OriginalL'auteur sdjuan
Si vous utilisez une commande dans votre programme perl, je vous conseille de mettre le chemin complet de la commande dans votre programme.
J'ai essayer de charger l'environnement, mais il n'est pas plus utile.
Après une superviser avec un collègue, je pense que c'est de l'interaction entre perl et de l'environnement du système.
Meilleures salutations,
Moustapha Kourouma
OriginalL'auteur Moustapha Kourouma