Cronjob executa '/ usr / bin / python' mas não 'usr / bin / xrdb' [duplicado]

0

Estou tentando criar meu primeiro trabalho no cron. Eu sou novo em bash scripting também, embora eu conheço algum python. Estou intrigado com o seguinte:

Aqui está o meu arquivo cronjob criado com crontab -e :

*/1 * * * * /home/darren/.bash_scripts/urxvt_colors.sh

Conteúdo de urxvt_colors.sh :

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py
xrdb ~/.Xresources

Aqui está o que me desconcerta. Portanto, a parte python da tarefa cron funciona python ~/.Py_Scripts/xr_random_colors.py é executada a cada minuto. Este script python altera o esquema de cores no meu arquivo ~/.Xresources . Eu confirmei isso realmente acontece, verificando a cada minuto. Mas xrdb ~/.Xresources não atualiza o arquivo.

A execução de which python mostra /usr/bin/python e which xrdb mostra /usr/bin/xrdb . Então, uma vez que ambos são executados a partir de /usr/bin , por que apenas o script python é executado?

Além disso, se eu executar o script ./urxvt_colors.sh manualmente a partir do meu terminal, então ele funciona como esperado, o script python é executado e o mesmo acontece xrdb ~/.Xresources

O que está acontecendo aqui?

    
por Darren Haynes 22.06.2017 / 16:44

1 resposta

1

Tente alterar seu script como este

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py && xrdb ~/.Xresources

e eu recomendo que você use o caminho completo para os arquivos.

PS talvez você precise definir DISPLAY var enquanto exec script

*/1 * * * * DISPLAY=:0 /home/darren/.bash_scripts/urxvt_colors.sh
    
por 22.06.2017 / 18:04