Ошибки вывода даты в скрипте запущенном при помощи cron-а


Anonymous - Posted on 11 Январь 2011

Когда я выполнял скрипт в консоли то команда date +%x отрабатывала правильно и возвращала дату в таком формате 11.01.2011, а когда скрипт отрабатывал через крон то дата такая 01/11/11. Дело было в том что у крона нет явной локалии. Команда в скрипте

export LC_ALL=ru_RU.UTF-8

решила проблему.

Проверить локалию можно командой locale из консоли и из крона.

0
Ваша оценка: Ничего

дело в том, что vixie cron сбрасывает переменные окружения (в целях безопасности и совместимости с тем режимом, в котором работает cron. например выполняемому скрипту не дается чесный /dev/pty/)
поэтому переменные приходится присваивать. эти переменные можно определять прямо в скрипте (и export если есть подоболочки). можно прямо среди кроновский заданий. первые абзацы man 5 crontab об этом говорят. и пример из man-a:

# use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
# mail any output to 'paul', no matter whose crontab this is
MAILTO=paul

насчет формата даты: достаточно переменной LC_TIME, а не LC_ALL

man 5 crontab:

Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input

Так что в кроне знак % нужно прикрыть \

date -F

Не, наврал с синтаксисом

date +

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.