タイムゾーンをに設定して実行中のサーバーがありますUTC
。これは一般的に良い習慣のようです(間違っている場合は訂正してください)。
とにかく、ファイルのためにscp
私が接続しているサーバーの1つがEDT
コピーする必要がある形式でファイルを実行して保存しています/path/to/filename/data20120913
。
rsync
最後の日に修正されたファイルを見つけるためにfindフラグのようなものを試しましたが、-mtime -1
まったく成功しませんでした。
今日のファイルだけをコピーするのは大丈夫ですが、scp
現在は4時間のウィンドウがあり、実行はdate +%Y%m%d
各サーバーで異なる日を提供するため、少し迷惑です。
見てman date
、時間を次のように出力できることがわかりましたが、UTC
それを別の時間帯に出力する方法が見つかりませんでした。EDT
date
私はまた、GNU拡張のようなものを使って、date -d 20100909 +%s
奇跡の後の秒単位の日付を取得し、手動の秒計算を適用し、それがどのように日付としてレンダリングされるかを見ることができると思います4 * 60 * 60
。しかし、夏時間が始まると、まだ1時間になります。
YYYYMMDD
に設定されているサーバーから日付を形式で出力する簡単な方法はありますか?EDT
UTC
ベストアンサー1
次のようにクエリ期間のタイムゾーンを設定できます。
TZ=America/New_York date
TZ
設定とコマンドの間のスペースに注意してくださいdate
。 Bourneに似たシェルでは、rc
変数は現在のコマンドに対してのみ設定されます。TZ
他のシェル(csh
、、、 )では常に次のtcsh
ものfish
を使用できますenv
。
env TZ=America/New_York date
長すぎます。
Linuxシステムで。タイムゾーンはディレクトリ内のファイルで定義されています/usr/share/zoneinfo
。このような構造をよく呼びます。「オールソンデータベース」創立貢献者を称えるため。
各タイムゾーンのルールはテキストファイルの行として定義され、バイナリファイルにコンパイルされます。このようにコンパイルされた行は、そのゾーンが適用されるデータと時間範囲、および該当する場合は夏時間の変換方法を定義する表記法を定義します。
America/New_York
たとえば、「America」ディレクトリには、上記のファイルからNew Yorkに必要な情報が含まれています。
存在しない領域(ファイル名)の仕様は自動的に無視され、UTC時間が報告されます。たとえば、次は間違った時間を報告します。
TZ="America/New York" date ### WRONG ###
単一のUNIX仕様バージョン3(SUSv3またはPOSIX-2001と呼ばれる)では、移植性のためにタイムゾーンの説明を識別する文字列がコロン文字で始まる必要があることを示しています。したがって、次のように書くこともできます。
TZ=":America/New_York" date
TZ=":America/Los_Angeles" date
説明ファイルパスを使用してタイムゾーンを指定する代わりに、SUSv3はPOSIXモデルを記述します。この形式では、文字列は次のように定義されます。
std offset [dst[offset][,start-date[/time],end-date[/time]]]
ここで、はstd
標準コンポーネント名、dst
は夏時間コンポーネント名です。各名前は3文字以上の文字で構成されています。offset
本子子午線の西タイムゾーンは正の値を持ち、子午線の東タイムゾーンは負の値を持ちます。 UTC(以前のGMT)を取得するには、現地時間にオフセットを追加してください。および時間フィールドは、標準/日光変換が発生するタイミングを示しますstart
。end
たとえば、米国東部では、標準時がUTCより5時間速く、代わりにEST5EDT
それを指定できますAmerica/New_York
。しかし、これらの選択肢は特に米国以外の地域では常に認識されていないため、避けるのが最善です。
HP-UX(SUSv3準拠のUNIX)は、/usr/lib/tztab
EST5EDT、CST6CDT、MST7MDT、PST8PDTなどのテキストルールとPOSIX名を使用します。このファイルには、Olsonデータベースと同様に、各タイムゾーンのすべての履歴ルールが含まれています。
メモ:次のディレクトリを確認すると、すべてのタイムゾーンを見つけることができます。/usr/share/zoneinfo
。