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

Это не корневой каталог. Приведенный выше скрипт является частью большего скрипта. Я не могу запустить следующий скрипт как задание cron. В то время как при запуске в качестве cronjob к файлу /tmp /out добавляется только "Test", а kdialog не отображается.

/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

Пожалуйста, помогите мне решить эту проблему.

2 ответа2

3

Задание cron не запускается в том же сеансе X, в который вы вошли, поэтому он не знает, с каким X сервером связаться. Когда вы входите в систему, адрес X-сервера сохраняется в переменной окружения $ DISPLAY. Любой процесс, запущенный из X, будет использовать эту переменную, чтобы определить, какой сервер использовать.

Вам нужно найти способ передать адрес соответствующего сервера вашей работе cron. Это может быть так просто, как:

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

Задания Cron не выполняются ни в какой среде отображения, поэтому использование в них любых приложений с графическим интерфейсом или TUI, как правило, нецелесообразно. Вместо этого проверьте почту, отправленную заданием cron, для уведомления об успехе / неудаче.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .