Cron works, but scheduled job to open webpage in chrome does not

Updates START

  1. A friend of mine just answered this. I need to do this export DISPLAY=:0 && <my GUI dependent command here> Waiting for him to post the answer here.
  2. I have tried /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL & without the & too. Still fails. Succeeds directly on command line.
  3. There is no /var/log/cron file on my machine. Subsidiary question: How can I get it?

Updates END

I have a Google Doc that I need to update at regular intervals multiple times a day. The content that would form a particular update cannot be predicted or determined programatically. So, the best solution I have is to have the particular Google Doc page open up automatically at fixed intervals and then I manually add the data to it.

Now, the problem is that what works directly on the command line does not work when used in crontab. Below is what I have tried (using 2mins interval just for testing) -

*/2 * * * * date >> /tmp/crontest
*/2 * * * * /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
  1. If I cat /tmp/crontest , I see timestamps added there for every 2nd minute
  2. If I just try /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL on the shell, it works as expected
  3. But PARTICULAR_GOOGLE_DOC_URL does not get opened in my chrome every 2nd min as it should. (again: I am using 2mins interval just for testing)

What am I doing wrong? How should I fix this? Any alternate way of achieving what I need done?

Thanks in advance.


Edit the crontab with export DISPLAY wrapper:

2 * * * * export DISPLAY=:0 && firefox %u

This opens an empty Firefox tab, you can use you favourite URL.


cron is intended for command line jobs, and runs commands with a very limited set of environment variables - just HOME, LOGNAME, PATH, and SHELL.

At the least, chrome will require DISPLAY to be set. It may also be unhappy without other variables (eg, DBUS related ones). Run env in a terminal to see your current environment.


The enviroment that you get for a cronjob is very limited. For example you dont get the DISPLAY varible wich is required to open chrome.

Wrap your command in a script

#!/bin/sh
export DISPLAY=:0
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL

Not realy sure if you need more variables to get it to work. I made a similar script that started konsole (terminal in KDE) that worked in cron.