0

该脚本是从终端运行的,但不是从 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
4

1 回答 1

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 条目/文件,该编辑器可让您取出虚假的回车。

于 2013-07-22T18:16:18.617 回答