通知作为cron工作

时间:2011-05-31 18:06:20

标签: python cron

我编写了一个python应用程序,它作为一个cron作业运行正常。后来我添加了一些库(例如pynotify和其他*),因为我希望收到描述发生了什么的消息的通知,但似乎cron无法运行这样的应用程序。

您是否知道如何每五分钟运行一次此应用程序?我正在使用Xubuntu。

  • import gtk, pygtk, os, os.path, pynotify

我可以在没有问题的情况下运行没有cron的应用程序。

Cron似乎运行应用程序,但它不会显示通知消息。在/var/log/cron.log中没有错误。应用程序每分钟执行一次没有问题。

我的crontab: */1 * * * * /home/xralf/pythonsrc/app

谢谢

4 个答案:

答案 0 :(得分:1)

如果你的python脚本本身运行良好并且只在cron中失败,那么很可能是库的路径没有在cron中设置。这是我的一个cronjobs的例子,我在执行文件

之前添加了cron的路径
00 12 * * * LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib && export LD_LIBRARY_PATH && /path/to/my/script

您必须将上面的路径替换为库的相应路径。

答案 1 :(得分:1)

如果cron作业以“你”运行,并且如果设置DISPLAY var(导出DISPLAY =:0),则应该没有问题。

答案 2 :(得分:0)

我没有看到使用pynotify的cron作业有任何问题?你得到的错误是什么?

你可以单独运行你的python代码来检查你的python代码是否运行得很好但是只能用cron失败?

Celery是分布式作业队列&用Python编写的任务管理器,但它可能对你的需求太多了。

如果您知道您的程序将在5分钟后关闭,那么Supervisord也可以执行某种cron任务。因此,您可以配置supervisord以便在不久之后启动任务。没有一个像cron一样不容易。

答案 3 :(得分:0)

您最可能的问题是路径问题。除非您专门设置,否则Cron没有用户路径。因此,如果您的库安装在非标准位置或用户帐户中,则cron将需要完整路径,否则您需要在crontab文件中设置路径变量。

添加行

PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/any/other/path

到您的crontab文件,看看它是否有效。