Script não sendo executado a partir do crontab, mas rodando do terminal?

1

O script está sendo executado a partir do terminal, mas não do crontab. O código de script e o erro que estou recebendo estão escritos abaixo:

Cronjob

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

Script

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

Erro do correio 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
    
por Kapila Clan 22.07.2013 / 19:16

1 resposta

2

Seu script 'mkdir.py' não está em um local visível para o seu caminho atual. Você pode ver os lugares que o cron / sh está procurando no e-mail da mensagem de erro: %código% Isso significa que qualquer coisa não qualificada com um diretório precisa estar em X-Cron-Env: <PATH=/usr/bin:/bin> ou /usr/bin . O Python está em um desses diretórios (ou o cron diria algo como "comando não encontrado: python"), o mkdir.py não é.

Uma solução simples: Tente alterar sua entrada no crontab para: /bin

Uma correção mais envolvente: Como você tem '#! / usr / bin / python' no seu script, não é necessário invocar explicitamente o python para executá-lo; você poderia dar a ele permissões de execução via python /path/to/mkdir.py e copiá-lo para chmod +x mkdir.py .

A alteração da entrada do crontab para /usr/bin deve funcionar depois que você mover o script executável para o local correto.

    
por javanix 22.07.2013 / 19:43