私はLinuxディストリビューションのインストール期間を確認するためにune2fsを使用してきましたが、タイムゾーンがわからない場合、ここに含まれる日付はあまり役に立ちません。私が使った正確なコマンドはここ、明確にするために:
sudo tune2fs -l /dev/sda3 | grep created | sed 's/.*created\:\s*//g'
ただし、出力は次の形式です。
Fri Jun 23 23:59:22 2017
タイムゾーンは言及されていません。ただし、date
次の形式の出力を返します。
Sun Jul 23 17:58:18 AEST 2017
AESTタイムゾーンがどのように言及されているかをご覧ください。マンページを読みました。tune2fs
。 Webブラウザの検索ユーティリティを使用して「日付」、「作成」、「時間」を検索しましたが、日付形式のタイムゾーンに言及しているか、手動で設定する方法があるかどうかがわかりませんでした。 DuckDuckGoを実行して「tune2fs date」と「tune2fs timezone」を検索しました。
答え1
時間はUnix epoch時間として保存されますs_mkfs_time
(スーパーブロック) カレンダーの日付ではなく、時間帯に依存しません。
表示するときは、tune2fs
カレンダー/人の日付に変換して、あなたのタイムゾーンに合った表現を提供してください。
UTC時間を取得するには、次のコマンドを実行します。
TZ=UTC0 LC_ALL=C tune2fs -l /dev/sda3 |
sed -n 's/^Filesystem created: *//p'
これは、tune2fs
タイムゾーンがUTC(UTCから0オフセット)であることを示します。
Filesystem created
英語で返され、日付がユーザーのロケールに関係なく(将来国際化される場合)、アメリカ英語スタイルで表示されるようにLC_ALL = Cを追加しました。e2fsprogs
スーパーブロックのオフセット0x108にあり、スーパーS_mkfs_time
ブロックはブロックデバイス内のオフセット0x400から始まり、エポック時間を手動で取得することもできます。
od -vAn -j 0x508 -N4 < /dev/sda3
好きな形式に変換してください。
$ date --iso-8601=s -d "@$(od -An -j0x508 -N4 -tu4 < /some/device)"
2017-07-23T12:20:22+01:00
$ date -u --iso-8601=s -d "@$(od -An -j0x508 -N4 -tu4 < /some/device)"
2017-07-23T11:20:22+00:00
答え2
日付は、作成時のローカルシステムタイムゾーンで表示されるように見えます。
たとえば、私の/bootパーティションはraid-1(/dev/md0)のext4です。これは、昨年ブートドライブを4つのSSDに置き換えてZFSからルートに変換したときに作成されました。場合に備えて/boot ext4パーティションを維持しました。
# tune2fs -l /dev/md0 | sed -n -e 's/.*created\:\s*//gp'
Sat Oct 8 16:38:45 2016
# TZ=UTC tune2fs -l /dev/md0 | sed -n -e 's/.*created\:\s*//gp'
Sat Oct 8 05:38:45 2016
私もオーストラリア東海岸(メルボルン)にあり、16:38と05:38の差は11時間です。これはAEDTに適しています(10月に始まる夏時間を守るための注意の場合)。
しかし、grepの出力をsedやawkにパイプする必要はほとんどありません。どちらも正規表現パターンマッチングを実行できます。 awkの例は次のとおりです。
# tune2fs -l /dev/md0 | awk -F': +' '/created/ {print $2}'
Sat Oct 8 16:38:45 2016