问题描述
|
我正在尝试通过Fabric更改远程服务器的时区,如下所示:
运行(\“导出TZ = \\\”:太平洋/奥克兰\\\“ \”)
运行(\“日期\”)
这似乎不起作用。
run(\"date\")
给我:
TUE Apr 19 00:19:58 CDT 2011这不是我刚刚设定的时区。
如果我只是登录服务器并运行相同的bash命令,那么一切都将如期进行:
[lazo @ lazoweb] $日期
2011年4月19日星期二00:20:00
[lazo @ lazoweb] $ export TZ = \“:太平洋/奥克兰\”
[lazo @ lazoweb] $日期
星期二四月19 17:20:20 NZST 2011
谁能对此有所启发?我想念什么?解决方法
run(\"export TZ=\\\":Pacific/Auckland\\\"\")
run(\"date\")
就好像
/bin/sh -c \'export TZ=\":Pacific/Auckland\"\'
/bin/sh -c \'date\'
您正在启动一个shell,设置它的环境变量之一,然后退出它。它从来没有机会将环境变量传递给任何人。
在脚本的环境中设置TZ,然后运行ѭ3。我不了解Python,但似乎
os.environ[\'TZ\'] = \":Pacific/Auckland\"
run(\"date\")
,由于ikegami解释了有关环境的原因,两个单独的命令将不起作用。但是,您可以通过以下方式实现您的期望:
run(\"TZ=\':Pacific/Auckland\' date\")
,这仅适用于当前shell。关闭外壳,启动新外壳并键入date
,您将看到TZ已重置为默认时区。即使对于Fabric,如果您捕获了输出,您也会看到TimeZone的设置正确,但是随着脚本的结束,外壳也是如此,因此TZ变量不再可用。