Python 脚本正在从终端运行,但不是从crontab运行?

Python 脚本正在从终端运行,但不是从crontab运行?,python,cron,ubuntu-12.04,crontab,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.serv

脚本正在从终端运行,但不是从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
来自root@vps.server.com2013年7月22日星期一21:10:05
返回路径:
接收:来自vps.server.com(localhost[127.0.0.1])
由vps.server.com(8.14.4/8.14.4/Debian-2ubuntu2)提供,ESMTP id为r6MHA3ll002017
对于2013年7月22日星期一21:10:03+0400
收到:(来自root@localhost)
通过vps.server.com(8.14.4/8.14.4/提交)id r6MHA1sr002016
为根;2013年7月22日星期一21:10:01+0400
日期:2013年7月22日星期一21:10:01+0400
消息Id:
发件人:root@vps.server.com(Cron守护进程)
致:root@vps.server.com
主题:Cron cd/root/;python mkdir.py
内容类型:文本/纯文本;字符集=ANSI_X3.4-1968
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
“:[Errno 2]没有这样的文件或目录

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

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

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

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

要修复它,请使用编辑器打开crontab条目/文件,该编辑器允许您取出伪回车。

cron
使用与shell中不同的环境。尝试将绝对路径传递到
yahoo.txt
,查看是否helps@inspectorG4dget我明白你的意思,但是脚本应该在脚本所在的目录中创建“yahoo.txt”。可能只有当脚本在用户主目录中时,才尝试
subprocess.call(['/path/to/touch','yahoo.txt')
?@KapilaClan。脚本应该创建
${home}/yahoo.txt
…@twalberg脚本位于/root/中,因此它应该创建“yahoo.txt”用户是root用户,因为脚本有
#!/usr/bin/python
,所以直接调用它比将它作为参数传递给
python
命令更有意义。@KeithThompson:好吧,假设
/usr/bin/python
是正确的路径。(我的脚本大多使用
/usr/bin/env-python
,尽管我曾有机会使用shell脚本前端来确定要调用哪个python,但这是在以前的$work中)@torek Thanx这个问题我把cronjobs从webinterface保存到一个文本文件,而不是把txtfile的内容保存到crontab,这就是我认为我得到回报的地方。
$ python verylongfilenamethatdoesnotexist.py^M
': [Errno 2] No such file or directoryamethatdoesnotexist.py