该脚本从终端运行,而不是从 crontab 运行。我收到的脚本代码和错误如下所示:
计划任务
*/5 * * * * cd /root/; python mkdir.py
脚本
#!/usr/bin/python
import subprocess
subprocess.call(['touch','yahoo.txt'])
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
答案1
您的“mkdir.py”脚本不在您当前路径可见的位置。您可以在错误消息 mail 中看到 cron/sh 正在查找的位置:
X-Cron-Env: <PATH=/usr/bin:/bin>
这意味着任何未限定目录的内容都需要位于 或 中/usr/bin
。Python/bin
位于其中一个目录中(否则 cron 会说“未找到命令:python”之类的内容),mkdir.py 不在。
一个简单的解决方法:尝试将您的 crontab 条目更改为:
python /path/to/mkdir.py
更复杂的修复:由于您的脚本中有“#!/usr/bin/python”,因此您不需要明确调用 python 来执行它;您可以通过授予它执行权限,chmod +x mkdir.py
然后将其复制到/usr/bin
。
mkdir.py
将可执行脚本移动到正确的位置后,更改 crontab 条目应该就可以起作用。