Running Script at boot using Cron

Johnrednex picture Johnrednex · May 11, 2016 · Viewed 7.8k times · Source

I want to execute a script once my computer boots up with cron. But it doesn't work.

My OS is Ubuntu MATE 16.04 LTS.

My crontab enter image description here

My script
enter image description here

My script's absolute path enter image description here

Once my Odroid boots up, the keyboard is still in qwerty.
What am I doing wrong ?

EDIT:
I tried @reboot echo "hi" > /home/valery/reboot.txt 2>&1 It works so the issue is not in the @reboot job.

EDIT: SOLUTION
I run my script from System > Preference > Personal > Startup Applications It's working fine.

Answer

Keith Thompson picture Keith Thompson · May 11, 2016

The setxkbmap command depends on the $DISPLAY environment variable to specify the X display it will affect.

On my system, if I run it without setting $DISPLAY, I get:

$ setxkbmap fr
Cannot open display "default display"

Crontab does not set $DISPLAY for the jobs it runs. In fact it provides only a minimal set of environment variables (on my system, just $HOME, $LOGNAME, $PATH, $LANG, $SHELL, and $PWD).

Anything a command prints to stdout or stderr will normally be e-mailed to the owner of the crontab. You're likely to have an e-mail message on your system containing an error message similar to the above.

It's likely that X Windows isn't even running yet when crontab executes the @reboot job. You'll have to find another way to run that command automatically, or just run it manually. (Or there could be another way to do this that I haven't thought of.)