Schedule to turn off monitor via crontab?
I want to turn off monitor on a specific period of time automatically (for example between 07:00 and 11:00). Is there any command to be set in crontab file? Is there any better way?
In summary:
Turning off the monitor at 07:00 automatically.
Turning on the monitor at 11:00 automatically.
- scren-saver & lock screen are disabled!
Solution 1:
Assuming that you are using the default gnome-screensaver for Ubuntu, open a terminal and run next commands followed by instructions:
-
mkdir -p bin
- this command will make abin
directory in yourhome
folder if you don't already have it. -
gedit ~/bin/screen_on_or_off.sh
- this will create the new filescreen_on_or_off.sh
in gedit. -
Copy and paste the next script:
#!/bin/bash export DISPLAY=:0 #very important if you want to be runned by a cron job current_hour=$(date +"%k") # Defining the disable_screensaver function function disable_screensaver { # Disabling sleep time # 0 value will never turn the screen off; you can change this value as you wish: # for example to turn the screen of after 10 min, use 600 gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0 gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 0 gsettings set org.gnome.desktop.session idle-delay 0 } # Defining the enable_screensaver function function enable_screensaver { # Enabling sleep time to 1 second gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 1 gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 1 gsettings set org.gnome.desktop.session idle-delay 1 notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Let's go to sleep now!" } if [ "$current_hour" -ge "7" ] && [ "$current_hour" -lt "11" ]; then enable_screensaver else disable_screensaver fi exit 0
Save the file and close it.
- Go back into terminal and run:
chmod +x screen_on_or_off.sh
- to grant execute access for the script. - Just for test, to run your new script, type in terminal
~/bin/screen_on_or_off.sh
. -
Edit the crontab entries using
crontab -e
command (by default this will edit the current logged-in users crontab) and add the following line:*/1 * * * * /home/$USER/bin/screen_on_or_off.sh #change $USER with your username
I have set the cron job for every minute, but you can change as you wish or as you think is better. See http://en.wikipedia.org/wiki/Cron in this sense.
- Save the file and check the new crontab entry with
crontab -l
.
Now your screen will turn off every day between 7 and 11.
Solution 2:
Newer and much simpler answer, put this in cron:
0 07 * * * export DISPLAY=:0 && xset dpms force off
0 11 * * * export DISPLAY=:0 && xset dpms force on