Crontab适用于不同的环境

时间:2015-04-16 05:22:48

标签: cron solaris

我有一个脚本,可以在Solaris上使用cronjob在不同的环境中运行。如何在cronjob之前为每个环境设置环境变量。我尝试通过初始化特定的环境。每个cronjob之前的变量,但它没有锻炼。任何人都可以选择这样做吗?

2 个答案:

答案 0 :(得分:0)

您可以直接在crontab中分配环境变量,只需添加一行

即可

VAR =值

这将对该计算机上该用户的所有cron作业生效。

或者你试过的是什么?我不确定如果你尝试多次分配同一个变量会发生什么,我的猜测是只有最后一个变量才有效。

答案 1 :(得分: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