отладка cron
1. /var/log
or sendmail
Поскольку crond
работает как демон, без возможности сбоя, выполнение важнее, чем ведение журнала. Затем по умолчанию, если что-то пойдет не так, cron
отправит письмо на $USER@localhost
, сообщив о выходных данных скрипта и ошибках.
Взгляните на /var/mail
или /var/spool/mail
для некоторых писем, может быть
и в /etc/aliases
, чтобы увидеть, куда отправляется почта root.
2. Кронд и $PATH
Когда вы запускаете команду с помощью cron, следите за тем, чтобы $PATH
был путем пользователя по умолчанию, а не корневым путем по умолчанию (т.е. не */sbin
и другим зарезервированным путем к инструментам суперпользователя).
Для этого более простой способ — напечатать путь по умолчанию в среде, где все работает нормально:
echo $PATH
или исправьте свой скрипт из командной строки:
sed -e "2aPATH='$PATH'" -i /root/scripts/direct.sh
Это добавит текущий инициализатор $PATH
в строку 2 вашего скрипта.
Или это, выбьет из вашего скрипта все остальные PATH=
:
sed -e "s/PATH=[^ ]*\( \|$\)/\1/;2aPATH='$PATH'" -i /root/scripts/direct.sh
3. Принудительное ведение журнала
Добавьте вверху вашего скрипта:
exec 1>/tmp/cronlog-$$.log
exec 2>/tmp/cronlog-$$.err
Попробуй это:
sed -e '1a\\nexec 1>/tmp/cronlog-$$.log\nexec 2>/tmp/cronlog-$$.err' -i ~/scripts/direct.sh
Окончательный сценарий может выглядеть так:
#!/bin/bash
# uncomment two following lines to force log to /tmp
# exec 1>/tmp/cronlog-$$.log
# exec 2>/tmp/cronlog-$$.err
PATH='....' # copied from terminal console!
docker exec -it mongodb mongodump -d meteor -o /dump/
Исполняемый флаг
Если вы запустите свой скрипт
40 05 * * * bash /root/scripts/direct.sh
никаких исполняемых флагов не требуется, но вы должны их добавить:
chmod +x ~/scripts/direct.sh
если вы хотите запустить:
40 05 * * * /root/scripts/direct.sh
person
F. Hauri
schedule
25.05.2016
PATH=
бесполезен, потому что вы перезаписываете его во второй строке. - person Cyrus   schedule 21.05.2016/dump/
, но внутри контейнера. Может быть, вы добавили этот каталог в качестве монтирования тома в контейнер mongodb? - person gesellix   schedule 23.05.2016