O trabalho do Crontab não funciona [duplicado]

0

Eu criei um trabalho simples de crontab.

Ele deve ser executado a cada 15 minutos para me alertar de que preciso fazer uma pequena pausa. No entanto, isso não funciona. Eu não sei porque.

Por favor me ajude se você tiver experiência com crontab. Eu usei o comando crontab -e para criar este arquivo e salvá-lo.

# 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)
# 
*/15 * * * * /home/galaxy/Documents/projects/Bash/cron_job.sh

Este arquivo deve executar o script cron_job.sh a cada 15 minutos.

Este é um script de shell Bash que possui um valor chmod de 500. Ele contém um comando para criar um novo terminal gnome e imediatamente executa um comando dentro desse novo terminal para catar o arquivo take_a_break. Isso é um arquivo de texto com uma mensagem simples dizendo-me para fazer uma pausa.

A execução a partir do terminal diretamente do script de shell ou apenas da execução do comando contido nele funciona sem problemas, mas o trabalho do crontab não funciona. Talvez eu tenha formatado algo incorretamente.

Aqui está o conteúdo do arquivo cron_job.sh:

 #!/bin/bash

gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""

A razão pela qual eu coloquei o comando dentro de um script de shell é porque o cron não o executou anteriormente, mas o cron também não executa o shell script.

Eu verifiquei e parece-me que tenho a sintaxe correta.

Além disso, se for relevante, tentar executar o comando crond gerará um erro:

$ crond
No command 'crond' found, did you mean:
 Command 'cron' from package 'cron' (main)
crond: command not found
    
por Galaxy 16.03.2017 / 03:42

1 resposta

1

Então, encontrei uma solução para o problema:

Eu usei o caminho completo do gnome-terminal e adicionei a linha export DISPLAY=:0.0 ao shell script.

Agora, meu trabalho do cron funciona como pretendido.

#!/bin/bash

export DISPLAY=:0.0
/usr/bin/gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""
    
por 16.03.2017 / 06:31

Tags