无法使用cron运行python脚本

时间:2019-02-09 10:05:31

标签: python cron

我正在尝试使用cron运行一个简单的python脚本,但我终生无法正常工作。我正在运行Ubuntu 18.04。

我知道对此有很多疑问(和答案)。我看过其中的一些,但仍然无法正常工作。

我的python脚本是:

#!/usr/bin/env python

from tkinter import messagebox
messagebox.showinfo('MessageBox','Hello world!')

我已遵循Unable to Run Python Script In Cron并按如下所示更改了权限:

chmod +x /home/brb/bugs/projects/cron/hello.py

我可以从命令行成功运行此代码,如下所示:

brb@bishop:~$ /home/brb/bugs/projects/cron/hello.py 

在crontab内,我尝试按照以下两种不同方式执行脚本(每2或3分钟尝试确定一个有效的脚本...)

*/2 * * * * /home/brb/bugs/projects/cron/hello.py
*/3 * * * * /usr/bin/env python /home/brb/bugs/projects/cron/hello.py

什么都没发生。

我遵循http://www.jessicayung.com/automate-running-a-script-using-crontab/并尝试如下检查错误文件:

cd ../..
cd var/mail 
nano $brb

我在nano上看到一条消息

[ Directory '.' is not writable ]

我不确定哪个目录为'。'是,也许是var / mail。无论如何,不​​确定如何使其可写。我猜想我会在google chmod上添加一些更多信息,以使它可写,但这仍然无法解决为什么cron在我看到的所有示例都看起来不起作用时无法正常工作...

编辑:

我按照How to run an X program from outside the X session (e.g. from the console or SSH)的三元组注释进行了操作,但由于并不真正知道自己在做什么,因此尝试更改显示权限,如下所示:

brb@bishop:~$ export XAUTHORITY=/home/brb/.Xauthority
brb@bishop:~$ export DISPLAY=':0'

我的cron工作仍然无法正常工作...

1 个答案:

答案 0 :(得分:2)

您的问题有两个:

  • cronjob不知道它可以在哪里显示图形应用程序(要使用哪个X服务器或DISPLAY

    可以通过确保在脚本环境中设置DISPLAY来解决此问题。在X会话中运行的终端中运行echo $DISPLAY:0很可能。

  • 即使知道正确的DISPLAY,也确实(应该)无法访问它。如果您在与运行目标X会话的用户相同的用户下运行cronjob。如果它是其他用户,并且可以访问用户的家,则可以通过设置XAUTHORITY指向它来重用它的授权文件。

    您还可以从正在运行的会话中导出必要的信息(随每个会话更新),将其输入到该终端中:xauth list $DISPLAY,然后将其添加给您的cron运行用户:xauth add displayname protocolname hexkey(使用这三个信息) xauth list返回的值。