Написание задания Cron, которое может получить доступ к данным пользователя - PullRequest
0 голосов
/ 04 августа 2010

Я пытаюсь написать задание cron, которое запускает отчет и отправляет результат по электронной почте на адрес, указанный в файле ~ / .bashrc моего пользователя.У меня это отлично работало на Fedora, но когда я перешел на Ubuntu, мое решение больше не работает.Команда, которую в настоящее время выполняет мое задание cron:

. /home/myuser/.bashrc; /home/myuser/bin/runreport

Если я запускаю эту команду вручную или запускаю ее через Gnome-Schedule, она отлично работает, но, похоже, никогда не запускается.Есть ли что-то специфическое для Ubuntu, которое блокировало бы его запуск?

Вывод crontab -l:

0 8 * * * . /home/myuser/.bashrc; /home/myuser/bin/runreport # JOB_ID_1

Вывод grep -i cron / var / log / syslog:

Aug  4 08:00:00 localhost CRON[23234]: (myuser) CMD (. /home/myuser/.bashrc; /home/myuser/bin/runreport # JOB_ID_1)

1 Ответ

3 голосов
/ 04 августа 2010

Если /home/myuser/bin/runreport является сценарием, добавьте следующие две строки вверху:

env
set -x

и измените строку crontab на:

. /home/myuser/.bashrc ; /home/myuser/bin/runreport >/tmp/qq 2>&1

Затем при запуске вы должны иметь все переменные среды и команды, которые были выполнены, в файле /tmp/qq.

Если это не сценарий, создайте сценарий, который его вызывает, и добавьте к нему строку env. Это по крайней мере даст вам среду, в которой вы работаете.

...