【发布时间】:2012-09-14 02:08:16
【问题描述】:
我的 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()
每个 cmets:是的,/usr/bin/python 存在。我也可以只使用/home/me/project/myscript.py 直接运行python 脚本。 /usr/bin/python /home/me/project/myscript.py 有效。所以我不相信这是原因?
【问题讨论】:
-
脚本中有什么?它是否依赖于任何环境因素?
-
是的,我想我们需要看看你的 myscript.py 里面
-
将 MAILTO 变量设置为您的用户名。然后你会在你的邮件中收到一些可能提供线索的错误消息。
-
您还可以验证直接使用
/home/me/project/myscript.py运行它是否有效(开头没有python,这是cron 运行它的方式)。 -
test.db是在您的主目录中还是在其他位置?cron作业从您的主目录运行,因此您可能需要更改目录或使用完整路径名来定位数据库。