Cron works, but scheduled job to open webpage in chrome does not
Updates START
- 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. - I have tried
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
without the&
too. Still fails. Succeeds directly on command line. - 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 &
- If I
cat /tmp/crontest
, I see timestamps added there for every 2nd minute - If I just try
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL
on the shell, it works as expected - 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.