2012年6月10日日曜日

Solarisで絶対時刻(?)を求める

UNIXにおける時刻というのは、1970年1月1日0時0分0秒からの秒数(エポック、というらしい)のことに決まっている、と思ったのですが、どうも今どきのSolarisは、その値を簡単に求める方法がないようです。
シェルスクリプトで時刻の計算をやりたかったので、さんざん探したら、こんな技を考えて下さった方がいました。
http://d.hatena.ne.jp/n-kaneshige/20081217/1229493317
システムコールのトレースを取って、実際には内部で使用しているこの秒数を求めている処理を横取りする、という荒技です。
このブログの通りのコマンドは、最後に割り算をしているので、日数を求めています。
# echo $((`truss date 2>&1 | grep time | cut -d" " -f2`/60/60/24))
後ろの割り算を適当に調節すれば、秒や時で求められますね。

そういえば、2000年問題の話題華やかなりし頃、このエポックが桁あふれするのが2000何年だったかに来るので、その時も何かが起きる、とか言われていましたが、恐らくOSの処理ビット数が増えたので、何ともなかったですね。
昔のままのコンピュータが動いているところでは、何か起きたのだろうか?