Я совсем новичок в cron и crontab.
Я отредактировал файл crontab, и мне нужно вручную выполнить одну из команд, чтобы я мог попробовать и протестировать ее заранее. Как мне это сделать? Если не получается, есть ли режим, который показывает ошибки?
Я совсем новичок в cron и crontab.
Я отредактировал файл crontab, и мне нужно вручную выполнить одну из команд, чтобы я мог попробовать и протестировать ее заранее. Как мне это сделать? Если не получается, есть ли режим, который показывает ошибки?
cron
практически не предоставляет никакой среды, поэтому ваш сценарий может исправить это. В частности, ваш профиль не будет использоваться.Нет, специально режима, который показывает ошибки, нет. Обычно, если задание 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
сообщает об окружающей среде; с аргументами он настраивает среду и выполняет команду.
Чтобы выполнить скрипт «вручную», вам сначала нужно сделать его исполняемым, выполнив:
$ chmod +x yourScriptName
Тогда сделайте либо
$ ./yourScriptName
если вы выполните его с его пути или
$ /full/path/to/yourScriptName
отовсюду.