Использование задач избивает крон (FreeBSD)

Ваше использование оболочки может сделать это becuase, у Вас есть оболочка для выполнения его от, т.е. когда Вы входите в систему, все Ваши сценарии оболочки в Вашем профиле выполняются.

Крон не имеет такой роскоши. Когда это войдет в систему (как корень), это войдет в систему с оболочкой по умолчанию. Это препятствует тому, чтобы любой вошел в систему удаленно, но это также означает, что нет никаких автосценариев входа в систему, которые запущены.

Можно установить оболочку для крона, чтобы работать под, отредактировать crontab и добавить SHELL и ДОМАШНИЕ переменные, например.

SHELL=/bin/bash
HOME=/root

если они не будут установлены, то крон будет работать с оболочкой и корневым каталогом, указанным в/etc/passwd (которые являются, вероятно, ничем, возможно/bin/sh).

Если Вы хотите видеть, что крон среды работает как, добавьте задание крона, которое экспортирует ENV в файл, например:

$crontab -e
* * * * * env > /tmp/crontabenv.log
:wq
1
задан 14 June 2011 в 20:21
3 ответа

Несколько вещей происходят со мной при чтении этого.

Если Вы работаете, удар, повторяющий значение $BASH, должен расшириться до полного пути и имени файла используемого исполняемого файла удара.

Как Вы называете дату в своем сценарии. Вы называете его с именем полного пути или как "дата". Более поздний случай может привести к использованию функции, псевдонимов, или что бы ни случилось быть первым в пути, а не программе даты, которую Вы ожидаете.

Bash будет вести себя по-другому в некоторых случаях в зависимости от среды. Можно хотеть вывести среду в файл из сценария и посмотреть на него работающий от командной строки и от крона. Можно найти, что ПУТЬ отличается или что некоторая другая переменная среды установлена по-другому. Необходимо смочь вывести это в файл в/tmp путем помещения строки как "ENV>/tmp/environment. $$" в сценарии. Каждый раз, когда скрипт запущен, он распечатает среду в файл, названный средой. (pid сценария)

Можно установить также оболочку для всего crontab к тому, какой бы ни оболочка Вы хотите при помощи "SHELL =/path/to/new/shell" на строке отдельно.

2
ответ дан 3 December 2019 в 22:07

Попытка, явно устанавливающая переменные среды (например. PATH) или явно получающие файлы запуска (например, /etc/profile или /home/root/.profile или безотносительно).

Если Ваш cron принимает другую оболочку, Вы могли бы хотеть exec сценарий удара.

0
ответ дан 3 December 2019 в 22:07

По крайней мере некоторые версии крона интерпретируют '%' как специальный символ. Я не могу сказать из Вашего ответа выше, если Вы используете ту команду даты в самом crontab. Консультируйтесь со своей страницей справочника. Это

man 5 crontab

Другая crontab страница справочника для команды crontab а не формата файла.

на Linux, но я не уверен в bsd.

Если это так, можно зафиксировать его путем выхода из % с \перед ним.

0
ответ дан 3 December 2019 в 22:07

Теги

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