Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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.

share|improve this question
1  
I 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. –  Nanne Jan 10 '13 at 10:52
    
It is probably a better solution to try and find an extension for chrome or firefox that automatically refreshes a given tab every N minutes. –  chronitis Jan 10 '13 at 10:56
    
@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 :) –  Sumeet Pareek Jan 10 '13 at 11:01

3 Answers 3

up vote 2 down vote accepted

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.

share|improve this answer
    
The best thing that worked for me was 0 */2 * * * export DISPLAY=:0 && /opt/google/chrome/chrome URL –  Sumeet Pareek Jan 10 '13 at 13:07

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.

share|improve this answer
    
this answer provided the best learning. thanks. –  Sumeet Pareek Jan 10 '13 at 13:08

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.

share|improve this answer
    
Not wrong at all, but a script was not needed, one liner in the crontab did it.. –  Sumeet Pareek Jan 10 '13 at 13:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.