不同环境下的Cronjob

不同环境下的Cronjob,cron,solaris,Cron,Solaris,我有一个脚本,它将在Solaris上使用cronjob在不同的环境中运行。如何在cronjob之前设置每个环境的环境变量。我尝试初始化特定的环境。变量,但它没有锻炼。有人能给出一种方法吗?您可以直接在crontab中分配环境变量,只需添加一行即可 VAR=价值 这将对该计算机上该用户的所有cron作业生效 或者你就是这么做的?我不确定如果您多次尝试分配同一变量会发生什么情况,我猜只有最后一个变量会起作用。您可以在cron中导出您喜欢的变量,或者使用多个设置源文件。接下来的4个crontab条目使

我有一个脚本,它将在Solaris上使用cronjob在不同的环境中运行。如何在cronjob之前设置每个环境的环境变量。我尝试初始化特定的环境。变量,但它没有锻炼。有人能给出一种方法吗?

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

VAR=价值

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


或者你就是这么做的?我不确定如果您多次尝试分配同一变量会发生什么情况,我猜只有最后一个变量会起作用。

您可以在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
编辑 另一种解决方案是在脚本中使用参数或包装器脚本调用脚本。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

我尝试在cronjob之前分配变量,并给出不同环境下所有作业之间的时间间隔,但它对我不起作用。我在linux上做了同样的事情。它很好,但在Solaris中不起作用。我尝试了同样的方法,创建了一个包含所有环境变量的文件,并在脚本运行之前添加到cronjob中,但它对我仍然不起作用。实际上,我正在数据库服务器上运行一个作为数据库服务器上存在的各种实例的SYSDBA。还有什么可以做的吗?这将是一个很大的帮助。您可以显示您的crontab行吗?设置必须在调用脚本时在行中完成,并且必须使用圆点进行来源。当您需要ksh时,在脚本的shebang行中或者在调用myscript时这样说,在脚本运行之前添加到crontab是什么意思?让一个cron作业只设置变量,另一个运行脚本是行不通的。每个cron作业都是完全独立的,从最小的环境开始。如果每个实例的变量需要不同的值,我建议将其作为参数传递给脚本。我不理解您在脚本运行之前添加到cronjob的注释,我担心您有两个不同的crontab。第二个将不知道第一个,他们是完全独立的。另一个解决方案:参见编辑。我用以下格式编写了crontab:****/包含环境变量的文件的路径。我必须运行的脚本请准确地告诉我们您尝试了什么。