Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I use the Geany IDE for programming, and it does not reliably reload my previously open files, for example after a power outage. I found that Geany has a command line feature which returns a list of all open files in the editor, so I hoped that I could quickly write a cron command that would automatically save that list every hour or so.

I currently have this line in my crontab:

0 * * * * ~/bin/save_geany_files

and the script contains just one line:

geany --list-documents > ~/geany_files.txt

This does not work. I noticed that Geany's --list-documents feature must be called by the same user (I think), so I tried adding "su - [myusername]" to the script, but apparently su cannot be used from within a cron job? So, I am at a loss for how to automate this. I am open to any other solutions to my problem, although Geany options/plugins seem to be unreliable (which is why I tried this in the first place)

share|improve this question
    
Have you made ~/bin/save_geany_files executable? It should work without the su (cron jobs are run by the user whose crontab it is) as long as the "script" (not really a script) is executable. –  terdon Apr 29 '13 at 19:07
    
Commands in your crontab (i.e. added via crontab without a -u argument) run under your account by default. Unless you're running geany as a user other than yourself, which seems mildly unlikely, the problem has to be somewhere else, e.g., with @terdon's suggestion that maybe the shell script isn't executable. –  Aaron Miller Apr 29 '13 at 19:08
    
And, as a more general solution, you might consider using a more reliable editor; I've found Emacs (which has long-standing and well-tested session save and restore facilities) quite suitable. (I know -- "Emacs? Augh!" -- but don't believe the hype! Emacs is extremely intuitive, once you've spent several years learning how it works. :) –  Aaron Miller Apr 29 '13 at 19:15
    
@terdon: Yes, the file is executable. I thought cron jobs were run as the owner, but I put in a debugging line, echo "user: $USER", and in the output it shows just user: , so I'm confused. I'm not running Geany as a different user. –  monguin Apr 29 '13 at 22:33
    
I'm not opposed to learning emacs, but that's something I'd do on my own time, so it will have to wait for a while. –  monguin Apr 29 '13 at 22:34

1 Answer 1

By running the crontab like this:

0 * * * * ~/bin/save_geany_files 2> /tmp/geanyerror.log

I found this error message in /tmp/geanyerror.log:

Geany: cannot open display

I solved this by adding the following line to .bashrc:

xhost local:arune > /dev/null

(where arune is my username) and changing my crontab to

0 * * * * export DISPLAY=:0.0 && ~/bin/save_geany_files 2> /tmp/geanyerror.log

My own save_geany_files-script looks like this:

#!/bin/bash
cp /home/arune/geany/savenew.txt /home/arune/geany/saveold.txt
/usr/bin/geany --list-documents > /home/arune/geany/savenew.txt

to store a "backup" for one hour extra.

share|improve this answer

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.