2017-08-17 2 views
1

Je ne fais que configurer un onglet/travail cron sur mon serveur de développement Cent OS.Planification d'un script python 3.6 en utilisant crontab/cron pour CentOS 7

Dans mon crontab, je donne les résultats suivants:

34 15 * * * cd-welcomeclient 0.0.5 & & python3.6 main.py

(Ignorer le réglage de l'heure, cela a été ajouté 15 : Heure du serveur 32 UTC juste pour la prochaine exécution programmée).

Dans la ligne de commande cd welcomeclient-0.0.5 & & python3.6 main.py fonctionne bien ... des suggestions?

Infos complémentaires: welcomeclient-0.0.5 est sous la racine dans la goutte, et python3.6 est dans usr/bin ...

Répondre

2

Essayez d'utiliser des chemins absolus dans la commande crontab:

34 15 * * * cd /foo/bar/welcomeclient-0.0.5 && /usr/bin/python3.6 main.py 

ou, en supposant que le main.py n'a pas également utiliser des chemins relatifs à l'intérieur de celui-ci:

34 15 * * */usr/bin/python3.6 /foo/bar/welcomeclient-0.0.5/main.py 
+0

le répertoire welcome-client se trouve réellement dans le répertoire racine ... –

+0

Est-ce que cela fait une différence sur la façon dont je devrais le référencer? –

+0

Ce que je l'ai modifié à est la suivante: '50 20 * * * /usr/bin/python3.6 /root/welcomeclient-0.0.5/main.py && >> /root/welcomeclient-0.0.5/main .log' –

1

on dirait que vous essayez de changer de répertoire crontab, tout comme omu_negru dit que vous aurez besoin d'utiliser pleinement chemin à la place. C'est parce que crontab, même s'il fonctionne sous votre nom, n'héritera pas de vos variables d'environnement telles que $ PATH.

Essayez ceci. Tout d'abord, allez dans le répertoire où se trouve votre script ... et mettez votre main.py dans un fichier exécutable afin de ne plus avoir à appeler python main.py. La façon la plus simple de le faire est ...

$ chmod u+x main.py 

Maintenant, si vous faites ls -l vous verrez que vous avez « x » dans la section utilisateur des autorisations qui vous permettront d'exécuter directement.

-rwxr--r-- 1 user user 0 Aug 17 17:55 main.py 

Maintenant, vous êtes prêt à simplifier la syntaxe crontab à quelque chose comme ça ...

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py 

J'aime aussi capturer la sortie du script dans un fichier journal de sorte qu'il est plus facile de dépanner quand les choses ne fonctionnent pas comme prévu notre, comme suit:

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py & >> /foo/bar/main.log 

Le journal doit être ajouté à rotation des journaux, sinon il continuera à remplir et, éventuellement, rendre votre système manque d'espace, mais qui est un autre t opic déjà adressé sur ce site.

+0

Ajout d'informations incluses dans ma question - aussi, main.log doit-il exister avant que quelque chose ne soit sorti ou est-ce que le cron le créera après la première exécution "successfull-but-not-successful"? –

+0

Je suis actuellement 100% sûr. Je vais généralement dans le répertoire et "touche main.log" juste pour m'assurer qu'il existe avant que les choses ne soient enregistrées. – darekm101