脚本从终端运行但不是从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
答案 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条目/文件,该编辑器可以让您取出伪造的回车。