- Напишите сценарий оболочки, который вы можете протестировать.
- Выполнить этот скрипт оболочки из crontab.
- Помните, что
cron
предоставляет практически любую среду, поэтому ваш сценарий, возможно, должен это исправить. В частности, ваш профиль не будет использоваться.
- Не увлекайся тем, что положил в crontab.
- Создайте режим отладки в своем сценарии оболочки.
Нет, конкретно нет режима, который показывает ошибки. Обычно, если работа cron увядает, вывод отправляется вам по электронной почте. То есть он отправляет вам стандартный вывод и информацию о стандартной ошибке, если выполненная команда записывает что-либо в стандартный вывод или в стандартную ошибку.
В MacOS X (10.6.7) среда, которую я получил, была (через запись crontab
, например 12 37 17 5 * env >/tmp/cron.env
):
SHELL=/bin/sh
USER=jleffler
PATH=/usr/bin:/bin
PWD=/Users/jleffler
SHLVL=1
HOME=/Users/jleffler
LOGNAME=jleffler
_=/usr/bin/env
Из них PWD
, _
и SHLVL
обрабатываются оболочкой. Итак, чтобы надежно протестировать ваш скрипт в cron-подобной среде, используйте:
(cd $HOME
env -i \
SHELL=/bin/sh \
USER=$USER \
PATH=/usr/bin:/bin \
HOME=$HOME \
LOGNAME=$LOGNAME \
/path/to/script/you/execute ...
)
Опция -i
для env
означает «игнорировать всю унаследованную среду»; скрипт увидит ровно пять указанных значений плюс все, что указывает оболочка автоматически. Без аргументов env
сообщает об окружающей среде; с аргументами настраивает среду и выполняет команду.