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

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

该脚本从终端运行,而不是从 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 条目应该就可以起作用。

相关内容