我的 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/