Crontab 作业计划

Crontab jobs schedule

我是 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

有人可以帮我找出我缺少的东西吗?

提前致谢。

调试时需要检查的几件事:

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

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

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

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

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

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

3.) 在 运行 时间验证环境是否符合预期:

* * * * * 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