O script a seguir não é executado como cronjob

1

snailmail.sh

#!/bin/bash
echo "Test" >> /tmp/out
/usr/bin/kdialog --title "MAIL RECIEVED" --msgbox "mail recieved!!"

crontab -e

#CronJobs located in $HOME/cronjobs/*

* * * * * /home/shadyabhi/cronjobs/snailmail.sh

Não é crontab da raiz. O script acima é uma parte de um script maior. Eu não posso executar o script a seguir como cron job. Considerando que quando executado como um cronjob, apenas "Teste" é anexado ao arquivo / tmp / out & o kdialog não é mostrado.

/var/log/crond.log

Oct 14 13:47:01 ArchLinux crond[1552]: FILE /var/spool/cron/shadyabhi USER shadyabhi PID 28844 /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:47:01 ArchLinux crond[1552]: exit status 1 from user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:47:01 ArchLinux crond[28846]: mailing cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:47:01 ArchLinux crond[28846]: unable to exec /usr/sbin/sendmail: cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh to /dev/null
Oct 14 13:48:01 ArchLinux crond[1552]: FILE /var/spool/cron/shadyabhi USER shadyabhi PID 28853 /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:48:01 ArchLinux crond[1552]: exit status 1 from user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:48:01 ArchLinux crond[28855]: mailing cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:48:01 ArchLinux crond[28855]: unable to exec /usr/sbin/sendmail: cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh to /dev/null
Oct 14 13:49:01 ArchLinux crond[1552]: FILE /var/spool/cron/shadyabhi USER shadyabhi PID 28858 /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:49:01 ArchLinux crond[1552]: exit status 1 from user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:49:01 ArchLinux crond[28860]: mailing cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh
Oct 14 13:49:01 ArchLinux crond[28860]: unable to exec /usr/sbin/sendmail: cron output for user shadyabhi /home/shadyabhi/cronjobs/snailmail.sh to /dev/null

Por favor, ajude-me a resolver este problema.

    
por Abhijeet Rastogi 14.10.2010 / 10:19

2 respostas

3

A tarefa cron não é executada na mesma sessão X em que você está conectado, portanto, não sabe com qual servidor X conversar. Quando você efetua login, o endereço do servidor X é armazenado em sua variável de ambiente $ DISPLAY. Qualquer processo iniciado a partir do X usará essa variável para determinar qual servidor usar.

Você precisa encontrar uma maneira de passar o endereço do servidor apropriado para o trabalho do cron. Pode ser tão simples como:

DISPLAY=:0 /usr/bin/kdialog --title "MAIL RECIEVED" --msgbox "mail recieved!!" &
    
por 14.10.2010 / 19:37
3

As tarefas Cron não são executadas em nenhum tipo de ambiente de exibição, portanto, o uso de qualquer aplicativo GUI ou TUI nelas é geralmente inadequado. Verifique as mensagens enviadas pelo trabalho cron para a notificação de sucesso / falha.

    
por 14.10.2010 / 10:31