Crontab não executa corretamente

2

Eu quero que meu script checkbat.sh mostre uma xmessage se o status da bateria estiver muito baixo. Executando o script no terminal via

bash /usr/local/bin/checkbat.sh

funciona bem. Para adicioná-lo aos cronjobs eu fiz primeiro

sudo crontab -e

e, em seguida, adicionou a seguinte linha:

*/5 * * * * bash /usr/local/bin/checkbat.sh

O qual deve executar o script a cada cinco minutos. No entanto, nada acontece. Alguma idéia?

    
por AlphaOmega 20.09.2016 / 18:08

3 respostas

2

O problema com o lançamento de programas X a partir de scripts é que eles estão perdendo variáveis de ambiente importantes, como a exibição a ser usada.

Certifique-se de que, no topo do script que você está chamando no seu crontab, você tenha configurado as variáveis de exibição X:

export DISPLAY=':0'
export XAUTHORITY='/home/your-user-here/.Xauthority'

Seu display X pode ser diferente; você pode verificar executando echo $DISPLAY em um terminal em sua sessão X.

    
por Windigo 20.09.2016 / 18:23
2

Como você sabe que não está sendo executado? Você pode nos mostrar o roteiro?

O problema mais comum é que o seu script é enviado para o console. No cron, o console não existe. Certifique-se de que seu script grave em um arquivo ou diretamente em um dispositivo de console.

No console onde você deseja ver a mensagem - execute: tty Isso mostrará o dispositivo que você está usando naquela sessão de terminal. Em seguida, use o nome do dispositivo assim: /usr/bin/myscript.sh > / dev / tty 2 > & amp; 1 Isso empurrará toda a saída tty para esse dispositivo e também enviará toda a saída de erro para o mesmo dispositivo. ATENÇÃO: Se você está abrindo e fechando sessões tty, você não pode confiar neste método. A maioria das tarefas do cron são projetadas para gravar diretamente em arquivos de texto e esses arquivos de texto são monitorados de alguma forma

    
por Jerry 20.09.2016 / 18:12
2

As tarefas do crontab não têm o ambiente configurado da mesma forma que um trabalho interativo. Você precisa certificar-se em seu script de que não está confiando em variáveis de ambiente indefinidas.

    
por qpgmr 20.09.2016 / 20:26