Uma coisa por vez:
Primeiro, vamos dar a você uma pasta bin com base no usuário:
cd ~/ && mkdir bin
Você quer usar o crontab. Vamos começar com algo muito simples:
* * * * * touch /tmp/testing.txt
Ok, isso funciona
Agora vamos tentar executar um script que faça o mesmo
* * * * * /home/username/bin/touchtest.sh
para executar uma vez por minuto até que você comece a trabalhar |
Não, você não precisa de um ./ no meio da linha. ./ é para quando você está dando URLs relativos.
Ok, então isso funciona
Agora vamos tentar executar um script que chame xmessage
* * * * * /home/username/bin/rebootwarn.sh
não funciona
Primeiro, precisamos não depender de variáveis de ambiente. Isso inclui configuração de caminho, configurações de x11 ou qualquer outra coisa (variáveis de ambiente python e ruby vêm à mente ...)
Vamos fazer a nossa parecer um pouco com o arquivo cron do anacron ... Eu salvei isso como teste
#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#End borrowed from anacron
* * * * * /bin/bash /home/username/bin/test.sh
Definido para ser executado uma vez por minuto
crontab test
para importá-lo
Para o script
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
up=$(uptime | grep "day" > /home/dnaneet/uptime.foo && awk < /home/dnaneet/uptime.foo '{ print }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"'
Ok, então isso funciona ... o que fizemos?
Nós mudamos todos os comandos para não depender de caminhos que não definimos explicitamente
Nós executamos nosso script explicitamente com bash
Nós dissemos ao script que esperamos estar no DISPLAY: 0.0