Linux - システム稼働開始日時取得(btime 使用)!
Updated:
以前、最近ログインしたユーザ情報を表示する last
コマンドで reboot
行からシステム稼働開始日時を判別する方法を紹介しました。
しかし、この方法は “wtmp” ファイルに依存するするため、 “wtmp” ファイルに “reboot” に関する情報が記録されてない場合は取得できません。(経験上、環境により記録されていたり記録されてなかったりした)
以下、プロセスの状態が記録されている “/proc/stat” ファイルから btime
値を取得して起動日時を判別する方法についての記録です。
0. 前提条件
- Linux Mint 17.1(64bit), CentOS 6.6, 7.0 で動作確認済み。
- 以下では、説明のため順を追って説明している。
1. btime 行の取得
システムの起動日時が “/proc/stat” ファイルの btime
行に記録されているので、それを取得。
$ grep btime /proc/stat
btime 1413336664
もしくは、
$ cat /proc/stat | grep btime
btime 1413336664
2. btime 値の取得
前項で取得した行の値の部分だけを cut
コマンドで切り出す。
(取得した btime
行の 7 バイト目移行を切り出し)
$ grep btime /proc/stat | cut -b7-
1413336664
3. btime 値を日付時刻型に変換
取得した値は UNIX 時間(1970/01/01 からの秒数)であるので、 date
コマンドで書式を変換する。
$ date +"%Y年%m月%d日 %H時%M分%S秒" --date=@`grep btime /proc/stat | cut -b7-`
2014年10月15日 10時31分04秒
“wtmp” ファイルに “reboot” ユーザの行が記録されてないことがあるために last
コマンドで取得できないことがありましたが、今回の方法なら(おそらく)確実に取得可能です。
以上。
Comments