Questão Executando um script se o servidor X não estiver recebendo nenhuma entrada por algum tempo


Eu quero executar um determinado script quando não estou em torno de minha máquina para que ele seja executado automaticamente, mas não me incomoda quando estou trabalhando. Eu criei o script bash e coloquei na fila com o cron, mas ele não parece rodar (ele não produz o efeito necessário de abrir uma aba do navegador).

Aqui está o script localizado em /home/suseika/.bin/stackoverflowfanatic:

#!/bin/bash
idle=`xprintidle` # tells how long in milliseconds x server haven't been receiving any events
required_idle_time=3600000 # one hour in milliseconds
if [[ $idle -gt $required_idle_time ]];
then
        chromium http://stackoverflow.com/
        echo idle was $idle
        xdotool mousemove 12 13 # A quick and dirty way to send an event to x server
        xdotool mousemove 12 14
        echo now idle is `xprintidle` # for debugging
fi

O script funciona bem se eu definir required_idle_time para 0 e executá-lo manualmente com sleep 1 && stackoverflowfanatic

Aqui está como eu enfileirei com o cron:

/etc/cron.d/stackoverflow:

0,30 *     * * *     suseika /home/suseika/.bin/stackoverflowfanatic

1


origem




Respostas:


O Cron não tem acesso à sua sessão X, por design. Você provavelmente deve executar isso em um loop de fundo do seu .xsession ou similar em vez disso.


1