Programar para desligar o monitor via crontab?

2

Desejo desligar automaticamente o monitor em um período de tempo específico (por exemplo, entre as 07:00 e as 11:00). Existe algum comando para ser definido no arquivo crontab? Existe alguma maneira melhor?

Em resumo:

Desligar o monitor às 07:00 automaticamente.

Ativando o monitor às 11:00 automaticamente.

  • scren-saver & amp; a tela de bloqueio está desativada!
por mini 26.06.2013 / 22:20

1 resposta

4

Supondo que você esteja usando o padrão gnome-screensaver para o Ubuntu, abra um terminal e execute os próximos comandos seguidos de instruções:

  1. mkdir -p bin - este comando criará um diretório bin na sua pasta home se você ainda não o tiver.
  2. gedit ~/bin/screen_on_or_off.sh - isto irá criar o novo arquivo screen_on_or_off.sh no gedit.
  3. Copie e cole o próximo 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
    
  4. Salve o arquivo e feche-o.

  5. Volte para o terminal e execute: chmod +x screen_on_or_off.sh - para conceder acesso de execução para o script.
  6. Apenas para teste, para executar seu novo script, digite no terminal ~/bin/screen_on_or_off.sh .
  7. Edite as entradas do crontab usando o comando crontab -e (por padrão, isso irá editar o crontab atual dos usuários logados) e adicione a seguinte linha:

    */1 * * * * /home/$USER/bin/screen_on_or_off.sh  #change $USER with your username
    

    Eu configurei o cron job para cada minuto, mas você pode alterar conforme desejar ou como achar melhor. Veja link nesse sentido.

  8. Salve o arquivo e verifique a nova entrada do crontab com crontab -l .

Agora, sua tela será desativada todos os dias entre 7 e 11 anos.

    
por Radu Rădeanu 27.06.2013 / 01:29