Crontab и тестирование команды для выполнения - PullRequest
0 голосов
/ 17 мая 2011

Я довольно новичок в cron и crontab.

Я отредактировал файл crontab, и мне нужно вручную выполнить одну из команд, чтобы я мог попробовать и проверить ее заранее. Как я могу это сделать? Если это не удается, есть ли режим, который показывает ошибки?

Ответы [ 2 ]

1 голос
/ 17 мая 2011
  1. Напишите сценарий оболочки, который вы можете протестировать.
  2. Выполнить этот скрипт оболочки из crontab.
  3. Помните, что cron предоставляет практически любую среду, поэтому ваш сценарий, возможно, должен это исправить. В частности, ваш профиль не будет использоваться.
  4. Не увлекайся тем, что положил в crontab.
  5. Создайте режим отладки в своем сценарии оболочки.

Нет, конкретно нет режима, который показывает ошибки. Обычно, если работа 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 сообщает об окружающей среде; с аргументами настраивает среду и выполняет команду.

0 голосов
/ 17 мая 2011

Чтобы выполнить скрипт «вручную», сначала необходимо сделать его исполняемым, выполнив:

$ chmod +x yourScriptName

Затем выполните

$ ./yourScriptName

, если вы выполняете его по его пути, или

$ /full/path/to/yourScriptName

из любого места.

...