id:kizashi1122 です。
Postfix で Maildir 形式で受信したときのメールファイルって見たことありますか? なんでこんなファイルなんだろうという感じのファイル名です。
こんな感じです。
1699255256.V10301I4d137d1M401570.ip-192-0-2-0.ap-northeast-1.compute.internal
ざっくり考える
なんとなくわかりますよね。.
で分割すると
- 現在のタイムスタンプのUnix Time(秒)
- よくわからないけど他のファイルと比較すると
V
I
M
は固定っぽい - ホスト名
(ホスト名のIPアドレス部分はドキュメント用のIPアドレスにしています。)
いきなり答え合わせ
unix time とホスト名はあってそうです。
V
I
M
については、vsprintf の部分をみてると
- デバイスID
- i-node 番号
- 現在のタイムスタンプのUnix Time(マイクロ秒)
ってことがわかります。
本当かどうか見てみよう。
stat
コマンドを使ってみてみます。
[root@ip-192-0-2-0 cur]# stat 1699255256.V10301I4d137d1M401570.ip-192-0-2-0.ap-northeast-1.compute.internal File: ‘1699255256.V10301I4d137d1M401570.ip-192-0-2-0.ap-northeast-1.compute.internal’ Size: 9486 Blocks: 24 IO Block: 4096 regular file Device: 10301h/66305d Inode: 80820177 Links: 1 Access: (0600/-rw-------) Uid: ( 1000/ec2-user) Gid: ( 1000/ec2-user) Access: 2023-11-06 07:20:56.399565900 +0000 Modify: 2023-11-06 07:20:56.399565900 +0000 Change: 2023-11-06 07:23:58.749107234 +0000 Birth: - [root@ip-192-0-2-0 cur]#
10301
はそのまま Device にのってるのでそのままっぽいです。
4d137d1
は inode なんでしょうか? stat では 80820177
と表示されます。これを16進数にしたら 4d137d1
になるのか?
$ printf %x 80820177 4d137d1
おお。ビンゴですね。
タイムスタンプは 10ms くらい差がありますけど、まあプログラムの実行時とファイル生成時にはそれくらいの差はあるかなという感じです。
いかがでしたでしょうか?
あれ?って思うことでもソースが公開されていると謎が解けてうれしいですね。