Por que meu comando crontab não está funcionando?

1

Eu não sei qual é o problema. Estou muito confuso.

Estou usando esse comando:

crontab -e

Conteúdo do Crontab:

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
* * * * * /home/myuser/Belgeler/test.sh

(Eu também tentei assim: * / 1 * * * * /home/myuser/Belgeler/test.sh para agendar a cada minuto)

quando eu uso no terminal, está funcionando perfeitamente:

/home/myuser/Belgeler/test.sh
O arquivo

test.sh está aqui:

#!/bin/sh
notify-send -i terminal "Notification test"

Eu não sei se o problema é ...

Eu também dei as permissões com este código:

chmod +x test.sh

Edit: Interessante, mas está trabalhando com alguns comandos como "mv (move)". Mas não está funcionando com o comando notify-send.

    
por Interesting Knox 18.03.2016 / 15:13

2 respostas

1

Você está perdendo a variável DISPLAY . Mude seu script para

DISPLAY=:0 notify-send -i "Notification test"

Explicação

Quando você executa o script a partir do seu próprio ambiente, várias variáveis de ambiente são definidas automaticamente. No entanto, o Cron é executado com um conjunto limitado de variáveis de ambiente.

Para executar aplicativos GUI (incluindo notify-send ), a variável DISPLAY é essencial.

Se você tiver mais de um DISPLAY

Caso você tenha mais de um DISPLAY (se, por exemplo, mais usuários estiverem conectados), o DISPLAY talvez não seja DISPLAY=:0
Se você tem regularmente mais de um usuário logado, pode ser necessário incluir em seu script a análise das informações do comando:

who -u

que produz linhas como:

jacob    :0           2016-03-18 08:30   ?          2419 (:0)

Como você pode ver, meu DISPLAY é :0

    
por Jacob Vlijm 18.03.2016 / 15:22
1

Talvez seja necessário adicionar o local de bash ou sh:

* * * * * /bin/sh /home/myuser/Belgeler/test.sh

Caso contrário, talvez você possa ver o que os registros dizem para encontrar um erro:

# cat /var/log/syslog |grep cron
    
por monitor35 18.03.2016 / 15:22