2015-04-16 3 views
0

У меня есть сценарий, который должен запускаться в разных средах, используя cronjob в Solaris. Как установить переменные среды для каждой среды перед cronjob. Я пытался инициализировать конкретный env. переменные перед каждой cronjob, но это не тренировка. Может кто-нибудь дать способ сделать это?Cronjob для разных сред

+0

Пожалуйста, покажите нам именно то, что вы пробовали. –

ответ

0

Вы можете назначить переменные среды непосредственно в кронтабе, просто добавьте строку

VAR = значение

Это вступит в силу для всех хрон рабочих мест для этого пользователя на этой машине.

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

+0

Я пробовал это, назначив переменные непосредственно перед cronjob и дал промежуток времени между всеми заданиями другой среды, но это не сработало для меня. Я сделал то же самое, что и в Linux, он работал нормально, но то же самое не работает в Solaris – user1

0

Вы можете экспортировать варры, которые вам нравятся в cron, или исходный файл с несколькими настройками. Следующие 4 записи crontab используют разные настройки среды.

10 * * * * export ONEVAR=firstExample; myscript >/dev/null 2>&1 
20 * * * * export ONEVAR=secondExample; myscript >/dev/null 2>&1 
30 * * * * . /home/user2262977/settings3; myscript >/dev/null 2>&1 
40 * * * * . /home/user2262977/settings4; myscript >/dev/null 2>&1 

EDIT Другим решением является использование параметра в сценарии (или обертку скрипт, призывающую скрипт). Crontab будет выглядеть

10 * * * * /home/user2262977/myscript settings1 >/dev/null 2>&1 
20 * * * * /home/user2262977/myscript settings2 >/dev/null 2>&1 
30 * * * * /home/user2262977/myscript settings3 >/dev/null 2>&1 
40 * * * * /home/user2262977/myscript settings4 >/dev/null 2>&1 

и сценарий будет начинаться с

case $1 in 
"settings1") 
    ONEVAR=firstExample 
    SECONDVAR=firstSomething 
    SERVER=firstServer 
    ;; 
"settings2") 
    ONEVAR=secondExample 
    SECONDVAR=secondSomething 
    SERVER=secondServer 
    ;; 
"settings3") 
    ONEVAR=thirdExample 
    SECONDVAR=thirdSomething 
    SERVER=thirdServer 
    ;; 
"settings4") 
    ONEVAR=somethingCompletelyDifferent 
    SECONDVAR=didntExpectThisOneComing 
    SERVER=stackoverflow.com 
    ;; 
esac 
+0

Я пробовал тот же созданный файл, содержащий все переменные окружения и добавленный в cronjob непосредственно перед запуском скрипта, но все же он не работал для меня. Фактически я запускаю скрипт на сервере базы данных, который подключается как SYSDBA для различные экземпляры, присутствующие на сервере базы данных. Что-нибудь еще, что можно было бы сделать? Это была бы отличная помощь. – user1

+0

Можете ли вы показать свою линию crontab? Настройки должны быть выполнены в строке в качестве вызова вашего сценария и должны быть получены с помощью точки. Когда вам нужно ksh, скажем так в строке shebang скрипта или в вызове myscript –

+0

Что вы подразумеваете под «добавлением к кронтабу непосредственно перед запуском скрипта»? Не будет работать одно задание cron, задающее переменные, а другое - скрипт. Каждое задание cron полностью независимо и начинается с минимальной среды. Если вам нужно различное значение для переменной для каждого экземпляра, я бы предложил передать ее как аргумент скрипту. –

Смежные вопросы