コマンドラインからカーネル時間を印刷する方法は?

コマンドラインからカーネル時間を印刷する方法は?

出力と比較するuptimeためにエポック後の出力を秒に変換するにはどうすればよいですか?dmesg稼働時間はカーネルメッセージ時間と同じ解像度を持ちますか?よりカーネル時間を得るより直接的な方法はありますかuptime

➜  ~ echo "hi" > /dev/kmsg
➜  ~ dmesg | tail
[  859.214564] hi
➜  ~ uptime
10:08  up 2 days, 43 secs, 2 users, load averages: 1.69 1.64 1.54

答え1

Unixの好みに応じて、/procファイルシステムには必要な情報を含む稼働時間ファイルがあります。

Linux> cat /proc/uptime
5899847.37 23165596.55

uptimeそして同時コマンドの出力は次のようになります。

Linux> uptime
16:46:27 up 68 days, 6:51,  3 users,  load average: 0.01, 0.02, 0.05

したがって、5899847.37/86400 = 68.28527 --> 68日6時間51分です。

答え2

カーネル時間は1970年1月1日以降の秒単位で保存されます。貴重なものとして扱われたいですか?それとも、カーネルが実際の日付/時刻が何であると思うのかを知りたいですか?

後者の場合はdate -u

1970年1月1日(エポック)以降の現在の時間(秒)を望み、それをインストールしたperl場合は、以下を実行できます。perl -e 'print time()."\n";'

同じ情報を返すこのdateコマンドを使用することもできます。date +"%s"

システムがどれだけ長く実行されたかを知りたい場合は、これがuptime最高のツールです。

関連情報