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