脚本是从终端运行而不是从crontab运行的?

时间:2013-07-22 17:18:04

标签: python cron ubuntu-12.04 crontab

脚本从终端运行但不是从crontab运行。我得到的脚本代码和错误写在下面:

脚本

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

来自Crontab邮件的错误

From root@vps.server.com  Mon Jul 22 21:10:05 2013
Return-Path: <root@vps.server.com>
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 <root@vps.server.com>; 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: <201307221710.r6MHA1sr002016@vps.server.com>
From: root@vps.server.com (Cron Daemon)
To: root@vps.server.com
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 个答案:

答案 0 :(得分:2)

您的命令行中有一个文字回车符(由一些错误的编辑器或Windows用户或其他人创建):

$ python nosuchfile.py
python: can't open file 'nosuchfile.py': [Errno 2] No such file or directory
$ python nosuchfile.py^M
': [Errno 2] No such file or directory

(上面的^ M,我是通过键入control-V control-M创建的,其中control-V是我的“lnext”字符。)

错误消息打印文件名,包括回车符,然后其余字符将覆盖错误的初始部分。请注意,如果您将文件名稍长一些,您会看到其中的一部分:

$ python verylongfilenamethatdoesnotexist.py^M
': [Errno 2] No such file or directoryamethatdoesnotexist.py

要修复它,请使用编辑器打开crontab条目/文件,该编辑器可以让您取出伪造的回车。