web-dev-qa-db-fra.com

Le script ne fonctionne pas à partir de crontab mais à partir de terminal?

Le script est exécuté à partir du terminal mais pas à partir de crontab.Le code du script et l'erreur que je reçois sont écrits ci-dessous:

Cronjob

*/5 * * * * cd /root/; python mkdir.py

Script

#!/usr/bin/python
import subprocess
subprocess.call(['touch','yahoo.txt'])

Erreur du courrier Crontab

From [email protected]  Mon Jul 22 21:10:05 2013
Return-Path: <[email protected]>
Received: from vps.server.com (localhost [127.0.0.1])
    by vps.server.com (8.14.4/8.14.4/Debian-2ubuntu2) with ESMTP id r6MHA3ll002017
    for <[email protected]>; Mon, 22 Jul 2013 21:10:03 +0400
Received: (from root@localhost)
    by vps.server.com (8.14.4/8.14.4/Submit) id r6MHA1sr002016
    for root; Mon, 22 Jul 2013 21:10:01 +0400
Date: Mon, 22 Jul 2013 21:10:01 +0400
Message-Id: <[email protected]>
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@vps> cd /root/; python mkdir.py
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <Shell=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

': [Errno 2] No such file or directory
1
Kapila Clan

Votre script 'mkdir.py' ne se trouve pas dans un emplacement visible par votre chemin actuel. Vous pouvez voir les endroits que cron/sh recherche dans le message d'erreur mail: X-Cron-Env: <PATH=/usr/bin:/bin> Cela signifie que tout élément non qualifié avec un répertoire doit être dans /usr/bin ou /bin. Python est dans l'un de ces répertoires (sinon cron dirait quelque chose comme "commande introuvable: python"), pas mkdir.py.

ne solution simple: Essayez de changer votre entrée de crontab en: python /path/to/mkdir.py

n correctif plus impliqué: Comme vous avez '#!/Usr/bin/python' dans votre script, vous n'avez pas besoin d'appeler explicitement python pour l'exécuter; vous pouvez lui donner des autorisations d'exécution via chmod +x mkdir.py puis le copier dans /usr/bin.

Le changement de votre entrée de crontab en mkdir.py devrait fonctionner une fois que vous avez déplacé le script exécutable à l'emplacement correct.

2
javanix