如何通过Fabric设置远程服务器时区?
我正在尝试通过Fabric来更改我的远程服务器的时区,代码是这样的:
run("export TZ=\":Pacific/Auckland\"") run("date")
但是这似乎没有效果。运行run("date")
后,我得到的结果是:2011年4月19日 星期二 00:19:58 CDT,这并不是我刚设置的时区。
如果我直接登录到服务器,运行相同的bash命令,结果就和我预期的一样:
[lazo@lazoweb]$ date Tue Apr 19 00:20:00 CDT 2011 [lazo@lazoweb]$ export TZ=":Pacific/Auckland" [lazo@lazoweb]$ date Tue Apr 19 17:20:20 NZST 2011
有没有人能帮我解答一下?我遗漏了什么吗?
3 个回答
1
这个只对当前的命令行有效。如果你关闭这个命令行,再打开一个新的,然后输入 date
,你会发现时区(TZ)又回到了默认的设置。即使是在使用Fabric的时候,如果你捕捉到输出,你会看到时区确实被正确设置了,但当脚本结束时,命令行也结束了,所以TZ这个变量就不再可用了。
2
由于ikegami提到的环境原因,这两个单独的命令是无法正常工作的。不过,你可以通过下面的方式实现你想要的效果:
run("TZ=':Pacific/Auckland' date")
4
run("export TZ=\":Pacific/Auckland\"")
run("date")
就像
/bin/sh -c 'export TZ=":Pacific/Auckland"'
/bin/sh -c 'date'
你在启动一个命令行窗口,设置了一个环境变量,然后又退出了这个窗口。这个变量根本没有机会传递给其他人。
在你的脚本环境中设置TZ,然后运行date
。我不太懂Python,但看起来是这样的
os.environ['TZ'] = ":Pacific/Auckland"
run("date")