4

次のように、Fabric経由でリモートサーバーのタイムゾーンを変更しようとしています:

run("export TZ=\":パシフィック/オークランド\"")
実行("日付")

これはうまくいかないようです。Tue Apr 19 00:19:58 CDT 2011run("date")は 、設定したばかりのタイムゾーンではありません。

サーバーにログインして同じ bash コマンドを実行すると、すべてが期待どおりになります。

[lazo@lazoweb]$ 日付
火曜日 4 月 19 日 00:20:00 CDT 2011
[lazo@lazoweb]$ export TZ=":太平洋/オークランド"
[lazo@lazoweb]$ 日付
火曜日 4 月 19 日 17:20:20 NZST 2011

誰でもこれに光を当てることができますか?私は何が欠けていますか?

4

3 に答える 3

4
run("export TZ=\":Pacific/Auckland\"")
run("date")

のようなものです

/bin/sh -c 'export TZ=":Pacific/Auckland"'
/bin/sh -c 'date'

シェルを起動し、その環境変数の 1 つを設定してから終了します。その環境変数を誰にも渡す機会がありませんでした。

スクリプトの環境で TZ を設定し、実行しますdate。私はPythonを知りませんが、そうです

os.environ['TZ'] = ":Pacific/Auckland"
run("date")
于 2011-04-19T05:47:35.993 に答える
2

池上が環境について説明した理由により、2 つの別々のコマンドは機能しません。ただし、次の方法で目的を達成できます。

run("TZ=':Pacific/Auckland' date")
于 2011-05-16T18:55:09.980 に答える
1

これは、現在のシェルでのみ機能します。シェルを閉じ、新しいシェルを開始して と入力dateすると、TZ がデフォルトのタイムゾーンにリセットされていることがわかります。Fabric の場合でも、出力をキャプチャすると、TimeZone が正しく設定されていることがわかりますが、スクリプトが終了するとシェルも終了するため、TZ 変数は使用できなくなります。

于 2011-04-19T05:41:27.093 に答える