Crontab的工作安排

时间:2017-04-18 20:40:56

标签: python crontab

我是Unix系统的新手。我正在尝试在crontab中安排python作业,如下所示;

42 15 18 4 *  absolute_path_where_python_is_install absolute_path_to_python_script > absolute_path_to_output_log_file

这没有任何作用:没有错误,没有输出 但是,当我手动运行下面的代码时,它按预期工作

absolute_path_where_python_is_install absolute_path_to_python_script > absolute_path_to_output_log_file

有人可以帮我识别我错过的东西吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

要检查调试的几件事:

1。)确保crontab正在运行。添加

* * * * * date >> /tmp/ping

并检查该文件以确保守护程序按预期工作。

2.)检查运行中脚本的错误。现在你只捕获stdout。捕获stderr并查看是否可以捕获错误消息

* * * * * python script.py > script.log 2>&1

添加2>&1是一个重定向,它将文件描述符2(stderr)重定向到正被发送到日志文件的文件描述符1(stdout),这意味着stdout和stderr将最终出现在日志文件中。

3。)验证env在运行时是否符合预期:

* * * * * env | sort > /tmp/env_in_cron

然后运行

env | sort > /tmp/env_at_runtime

sdiff /tmp/env_at_runtme /tmp/env_in_cron

并查看您可能需要的是否是他们的(并注意环境有多么不同)。如果你遗漏了什么,你可以

a。)添加单个参数

* * * * * PYTHONPATH=/python/lib/path python python-script.py > python-script.log

b。)或者只是获取完整的环境。

* * * * * . /home/user/.profile && python python-script.py > python-script.log

答案 1 :(得分:-1)

假设您通过crontab设置了cron,

如果您不需要任何特殊的python包

* * * * * python /path/to/file.py

从你的virtualenv

运行它

* * * * * /path/to/env/bin/python /path/to/file.py

如果您需要帮助来设置cron间隔,请尝试https://crontab.guru