не удается заставить cron работать на FreeBSD 10.2 для root

Как насчет использования команды 'script' -?

$ script logfile
$ somecommand
lots of command output...

Все, что вы делаете в оболочке, будет записываться в лог-файл. Остановить с помощью Ctrl+D.

Если вам это нужно только для одной команды, вы можете использовать опцию ' -c' -:

-c, --command command
    Run the command rather than an interactive shell.
    This makes it easy for a script to capture the output of a program
    that behaves differently when its stdout is not a tty.
0
31.08.2021, 02:36
1 ответ

Я предполагаю, что окружающая среда выглядит не так, как вы ожидаете. Cron выполняет задания практически в пустой среде. Это очень хорошая привычка использовать полные квалифицированные пути. Кроме того, я также предпочитаю явно указывать интерпретатор любого скрипта. До такой степени, что я обычно запускаю любой скрипт .shс помощью/bin/sh -c /mypath/myscript.sh(при использовании crontab!)

Что происходит, так это то, что запись crontabвыполняется с SHELL, установленным crontab (см. crontab (5)). Это /bin/shпо умолчанию. Это , а не оболочка входа в систему, поэтому среда не выглядит так, как если бы вы запускали ее вручную. Вы не указываете явно интерпретатор в своем сценарии, а используете трюк env . Мое предположение заключается в том, что окружающая среда выглядит не так, как ожидалось.

Затем я сделал бы что-то подобное (сcrontab -e):

*/5 * * * * /usr/bin/perl /root/bin/ars-reconnect.pl

Для получения дополнительной отладочной информации я бы вывел все в файл:

*/5 * * * * /usr/bin/perl /root/bin/ars-reconnect.pl >/root/crondebug.output 2>&1

Вывод cronjob обычно отправляется вам по почте, но описанное выше может быть проще, если на одну движущуюся часть меньше.

Это означает, что вам, вероятно, также следует обновить свой скрипт:

$ping = system("/sbin/ping -c4 8.8.8.8");

Вы можете установить PATHв файле crontab, но лично я редко так делаю. Обратите внимание, что значение по умолчанию PATHразличается между 10.2 и добавлены более новые версии(/usr/local).

0
31.08.2021, 09:48

Теги

Похожие вопросы