Cron works, but scheduled job to open webpage in chrome does not
Solution 1
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.
Solution 2
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.
Solution 3
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.
Related videos on Youtube
Sumeet Pareek
Simplifying, Solving and Innovating gives me the best high.
Updated on September 18, 2022Comments
-
Sumeet Pareek over 1 year
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.
-
Nanne over 11 yearsI doubt this wil work, you test on the commandline probably included you running a normal graphical session where the browser could be opened? Because cron doesn't have such a session, so I suspect it will not be run.
-
Sumeet Pareek over 11 years@Nanne, you are right. A friend of mine just got me the right answer for this on IM. All I need to do is prepend my command with
export DISPLAY=:0 &&
in the cron. I have asked him to post the answer here so I can accept it and show gratitude by getting him karma-points :)
- A friend of mine just answered this. I need to do this
-
Sumeet Pareek over 11 yearsNot wrong at all, but a script was not needed, one liner in the crontab did it..
-
Sumeet Pareek over 11 yearsthis answer provided the best learning. thanks.
-
Dan Kozlowski over 7 yearsThis worked best for me since my CRON task was kicking off a script! Thanks!