blog

UNIX時間

Linux講座

2015.08.26

UNIX時間

グループとユーザの作成・管理に関する授業を行っている時に以下の様な質問を受けた事があります。

『 ユーザのパスワードが保存されている/etc/shadowファイルの中の設定項目で
『disabled』の説明が『1970年1月1日からアカウントが使用不能になる日までの日数』
とありますが、何故1970年1月1日なのですか? 』
キリの良い様な悪い様なこの日付。
これはUNIX時間(UNIX時刻)と呼ばれるもので、コンピュータ上で決められた特別な時刻なのです。

そもそも【時刻】というのは 【2015年8月26日18時30分】 のような値ですよね。
【時刻】と似た言葉で【時間】という言葉があります。
これは二つの【時刻】の長さを表します。
【2015年8月26日19時00分】は今から30分後。これは【時刻】では無く【時間】となります。

日常生活ではその違いを考える事は無いと思いますが、コンピューター上、
特にプログラミングでは大事な概念になります。

UNIX時刻は様々な部分で使用されています。
C言語でもこの時間から何秒経過したかによって日時を算出しています。

このshadowファイルでもUNIX時刻の概念が使われており、
1970年1月1日という時刻を起点として、時間を計っているのですね。

んで、話しは逸れますがこの話題で必ず出てくるのが2038年問題。
システム内部では32ビット、もしくは64ビットで時間を管理しています。
32ビットの場合、管理できる最大数が2,147,483,647なので
起点日から数えた2038年1月19日3時14分7秒でオーバーしてしまいます。
それ以上数えられなくなってしまうのです。

なんだか90年代後半に話題になった2000年問題と似てますね。
あの時は『パソコンが壊れる』だの『某国のミサイルが誤作動する』だの言われてましたねぇ…

しかし、この問題を踏まえて現在は64ビットを使用するのが主流になっている様ですし、
残りの日までに全て差し替えられるので心配無用です。
64ビットになると3000億年分までカウントできるそうですよ、果てしない…。

SHARE

最新記事

無料相談する

INTERNOUS,inc. All rights reserved.