python - Crontab 不执行 Python 脚本?

标签 python cron

我的 python 脚本没有在我的 crontab 下运行。

我已将它放在顶部的 python 脚本中:

#!/usr/bin/python

我试过这样做:

chmod a+x myscript.py

添加到我的crontab -e:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""

* * * * * /home/me/project/myscript.py

我的/var/log/cron 文件说:

Sep 21 11:53:02 163-dhcp /USR/SBIN/CROND[2489]: (me) CMD (/home/me/project/myscript.py)

但是我的脚本没有运行,因为当我检查我的 sql 数据库时,没有任何改变。如果我像这样直接在终端中运行它:

python /home/me/project/myscript.py

我得到了正确的结果。

这是myscript.py:

#!/usr/bin/python

import sqlite3

def main():
    con = sqlite3.connect("test.db")

    with con:

        cur = con.cursor()

        cur.execute("CREATE TABLE IF NOT EXISTS testtable(Id INTEGER PRIMARY KEY, Name TEXT)")

        cur.execute("INSERT INTO testtable(Name) VALUES ('BoB')")

        cur.execute("SELECT * FROM testtable")

        print cur.fetchall()    

if __name__ == "__main__":
    main()

根据评论:是的,/usr/bin/python 存在。我也可以只使用 /home/me/project/myscript.py 直接运行 python 脚本。 /usr/bin/python/home/me/project/myscript.py 有效。所以我不相信这是原因?

最佳答案

互联网上有很多半答案,所以我想我会捕捉到这个以节省其他人一些时间。

首先,cronjob 在告诉您失败的地方做得很差。我建议将标准错误输出发送到这样的日志文件:

Crontab 命令:

# m h  dom mon dow   command
* * * * * /path/to/your_file.sh >> out.txt  2>&1

由于这很可能是以用户身份运行命令,请检查日志文件的主目录。请注意,此脚本每分钟运行一次,这有利于调试。

下一个问题是您可能有路径问题...因为脚本可能正试图从您的主目录执行。此脚本设置当前目录,将其回显到文件,然后运行您的程序。

试试这个:

脚本文件

#!/bin/sh
cd "$(dirname "$0")";
CWD="$(pwd)"
echo $CWD
python your_python_file.py

希望这可以为其他人节省一些调试时间!!!

关于python - Crontab 不执行 Python 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534135/

相关文章:

python - 将 pandas 中的两列相乘

python 到 C 的转换错误

javascript - NodeJS不断刷新数据库表的数据

php - 我做错了什么? "cronjob"

php - 通过 PHP 设置的 crontab 定期备份 MySQL 数据库不起作用

php sleep 功能奇怪的行为

python - 如何使用 Telethon 获取转发消息的 channel /聊天/用户名?

python - 使用 Matplotlib 3D 轴,如何同时拖动两个轴

windows - 您如何安排在 Windows XP 上运行每日脚本?

python - 如何在Python中导入