Подтвердить что ты не робот

Переменные в кронтабе?

Как хранить переменные в моем crontab? Я понимаю, что это не оболочка, но скажу, что я хочу иметь некоторые константы, такие как путь к моему приложению или что-то в этом роде?

Мысли?

4b9b3361

Ответ 1

В Vixie cron, который, возможно, наиболее распространен, вы можете сделать это почти так же, как оболочка script.

VARIABLE=value
PATH=/bin:/path/to/doathing
0 0 * * * doathing.sh $VARIABLE

На странице руководства написано:

Активная строка в crontab будет либо средой, либо командой cron. Настройка окружения имеет вид,

     name = value

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

Вы можете узнать, есть ли у вас Vixie cron, проверив страницу руководства для crontab; автором будет Пол Викси. Различные клоны могут или не могут поддерживать это (например, BusyBox cron), и в этом случае ваш лучший вариант - обернуть свою команду в оболочку script и запустить ее script из cron. На самом деле, это хорошая вещь для чего-то сложного.

Ответ 2

Вы можете поместить переменные среды в crontab. Подробнее см. Справочную страницу crontab(5).

Ответ 3

Я не очень разбираюсь в unix-парне, поэтому я не могу сказать ничего определенного, но это звучит как хорошее место для этапа предварительного процесса.

#define cmdpath /usr/bin/myfolder/cmd
0,30 8-17 * * 1-5 cmdpath
17 3 * * 1 cmdpath

работает, что через мой препроцессор компилятора С++ дает:

0,30 8-17 * * 1-5 /usr/bin/myfolder/cmd
17 3 * * 1 /usr/bin/myfolder/cmd

Это похоже на то, что вы хотели.