Linux:システム起動日時の取得


42

そんなこと知ってる uptime マシンが稼働している時間を表示しますが、この出力からカウントダウンするよりも、起動日を取得するためのより簡単な(信頼できる)方法はありますか?

見回してみた /procしかし、関連性のあるものは見つかりませんでした。私の上にこのような行もあります dmesg[ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)しかし、私はこの方法がディストリビューションとカーネルバージョンに依存しないかどうか疑問に思います。


なに unreliable or harduptime
Bobby

2
@Bobby:コマンドやその機能自体については何もありませんが、前回のシステム起動の日時を取得したいのですが、それ以降の期間は取得できません。 uptime "up 13 days、21:01"のような文字列を返すので、それを数える必要があるでしょう。
jho

4
稼働時間の値からカウントバックするのは簡単です。お望みならば 信頼性のある ほしい /proc/uptime
sam hocevar

回答:


36

いくつかのコマンドが見つかりました ここに 。やってみる who -b または last reboot | head -1
who 数値の日付を与えますが、 last reboot 省略された日/月名を返します。


日付だけが必要で他に何も必要ない場合はどうですか
T0xicCode

4
who -b | cut -d' ' -f13 日付のみを返します(-f14は時刻を返します)
charlesbridge

2
警告: last reboot 正しい日付を教えてくれませんでした。 who -b した。
qwertzguy

last reboot 私にも間違った日付を教えてくれました
golimar

21

これはカーネルから稼働時間を問い合わせ、それをローカルタイムゾーンに表示します。

date -d "`cut -f1 -d. /proc/uptime` seconds ago"

他のオプションには注意してください。の last コマンドはすぐに動作を停止します wtmp 回転しました。の who コマンドはの可用性と整合性によって異なります utmp。そして /proc/1 起動時の日付の代わりに現在の日付があるかもしれませんし、強化されたシステムでは利用できないかもしれません。 編集する dmesg 固定長のバックバッファしか持っていないので、それも現実的ではありません。カーネルログは /var/log しかし、ほとんどのディストリビューションはそれらの8週間しか保持しません。


1
興味深いことに、これは反対です。 who -b 私の210日の稼働時間システムで1、2分で。のように見えます who -b タイムカウントを報告しますが、このカウントは周期的な実行によって定期的に修正されていても、クロックドリフトの影響を受けています。 ntpd
Ruslan

2
すべての代替回答を確認した後、次のことを確認しました。 date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u (UTCで時間/日付があります)
david6

現象の答えカーネルが知らなければ、誰も知らない - それがシステムにとっての真実の源である。秒は時間計算を実行することを容易にします(私は私のホストのどれが最後の日以内に再起動しなかったか[86,400秒]を知りたいのでこれにつまずいた)
Mike S

14

私は一貫性のある、解析可能なものを取得する方法を探している間、私はこの質問につまずいた 起動時間 、 とは対照的に 起動後の時間 これは呼び出しごとに変わります。

どうやら uptime -s ほとんどのLinuxシステムでうまくいくでしょう。


uptime -s 出力例 2017-08-09 01:23:45。これが最も簡単なことです。このコマンドはパッケージ「procps」に含まれています。
teika kazura

uptime CentOS 6( procps version 3.2.8 悲しいことに、)はこれをサポートしていないようです。
mwfearnley

uptime -s 常に一定の結果を返すとは限りません。 superuser.com/q/1247713/71144
cweiske

10

私は見つけました btime 並ぶ /proc/stat ちょっとつつくとき

cat /proc/stat | grep btime | awk '{ print $2 }'

そしてクイック検索の後、私はこのページを見つけました: / proc / statの説明 これは、「カーネルアクティビティに関するさまざまな情報の概要」で説明されています。 /proc/stat ファイル。"

"btime"行はシステムが起動した時刻を、それ以降の秒数で示します。   Unixの時代


1
書くのがずっと簡単に思える awk '/btime/{print $2}' /proc/stat
William Pursell

最も簡単な@WilliamPursellは常にあなたがすでに知っているものです。私はawkウィザードではありません。 :P
Oddstr13

いい視点ね。しかし、あなたは猫を無料で使った。ファイルからgrepするだけです。
Mike S

@MikeS正しい - しかし、私はまだ私の答えの7年後でさえも、情報が見つかった場所の明確な表現として私のオリジナルのコマンドチェーンを支持しています。
Oddstr13

7
  • 良い uptime -swho -b または構文解析 /proc/uptime
  • 悪い ls -ld /proc/1 そして変形。

この目的のためにls -ld / proc / 1を使用しないでください。 それは時々更新されます s2diskまたはs2ramの後。

私の場合、 who -b 前記:

システムブート5月2日09時51分

しながら ls -ld /proc/1

dr-xr-xr-x 7ルートルート0 5月3日13:09 / proc / 1

ls -ld にとって /proc または /sys 再開後も持続するようですが、実装に依存し、将来変更される可能性があるため、このようなメソッドは使用しないでください。 そして もしあなたの システムクロックはUTCではなく現地時間です。 負のオフセットがあります。

(私はまだ答えにコメントする特権を持っていないので、新しい答えを開いた。すみません。)

編集: uptime -s 最初に答えました この答えで によって マイクグレイリング


2

最も簡単な方法は、/ sbin / initがいつ起動したかを確認することです(これは常にカーネルのロード後に起動される最初のプロセスです)。

# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1

そのため、2011年3月27日の午前6時から午前6時までにマシンが起動したことがわかります。

スクリプトで使用したい場合は、 stat 代わりにコマンド:

# stat --printf='%Y' /proc/1
1301266491

%Y ディレクトリが最後に変更されてからの時間(プロセス作成時間)をエポック(1/1/70)からの秒数で指定します。これは標準のunixタイムスタンプです。


1
残念ながらこれはうまくいきません:それらのフォルダのmtimeは他の理由で変わる可能性があります(ここでは5日間の稼働時間を持ち、/ proc / 1のmtimeは25分前です)。
kdt

1
それは 信頼できません で説明されているように 私の答え
teika kazura

1

Linuxでは、

ls -ld /proc

私に必要なものを教えてくれるようです。上の記事は変です。 /proc/uptime 日付値は含まれていません - それは現在の時間から引かれる必要があります。たぶん彼は言った:

date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))

uptime -s 日付値を提供します
mikegreiling

1

Bashの下で、パイプも他のプロセスもなし。ただのテキスト:

$ REPLY="$(</proc/uptime)"
$ REPLY="${REPLY%%.*}"
$ echo "$REPLY"
31207

(ただ再利用 REPLY デフォルトの変数ですが、必要に応じて選択できます。


もちろん? Kindaは変数の部分文字列を巧妙に使用します。クール。 +1。アイデアをありがとう!
Mike S

0
date -d @$(sed -n '/^btime /s///p' /proc/stat)

(これを行うためのさらに別の方法で、特定の状況では便利です)


0

コマンド:

(echo ' Currently:' | tr "\n" ' ' ; date +"%Y-%m-%d %k:%M:%S" ; echo '  Up Since:' | tr '\n' ' ' ; uptime -s ; echo '  Duration:' | tr '\n' ' ' ; uptime -p)

出力:

 Currently: 2016-05-09  9:06:29
  Up Since: 2016-05-04 12:56:04
  Duration: up 4 days, 20 hours, 10 minutes

0

明確で簡潔 タップタイム コマンド:

# tuptime -t
No.             Startup Date                                          Uptime            Shutdown Date   End                    Downtime

1     09:43:39 AM 08/08/2017      41 days, 0 hours, 51 minutes and 2 seconds   10:34:41 AM 09/18/2017    OK                  10 seconds
2     10:34:51 AM 09/18/2017                         1 minute and 16 seconds   10:36:07 AM 09/18/2017    OK                    1 second
3     10:36:08 AM 09/18/2017                       13 minutes and 20 seconds   10:49:28 AM 09/18/2017    OK                   3 seconds
4     10:49:31 AM 09/18/2017       45 days, 0 hours, 1 minute and 20 seconds   09:50:51 AM 11/02/2017    OK                   4 seconds
5     09:50:55 AM 11/02/2017                       27 minutes and 25 seconds   10:18:20 AM 11/02/2017    OK                   4 seconds
6     10:18:24 AM 11/02/2017                                       9 seconds   10:18:33 AM 11/02/2017    OK                   9 seconds
7     10:18:42 AM 11/02/2017      4 days, 5 hours, 41 minutes and 47 seconds   04:00:29 PM 11/06/2017    OK                  44 seconds
8     04:01:13 PM 11/06/2017    15 days, 17 hours, 33 minutes and 48 seconds   09:35:01 AM 11/22/2017   BAD   10 minutes and 40 seconds
9     09:45:41 AM 11/22/2017               8 hours, 9 minutes and 20 seconds   05:55:01 PM 11/22/2017   BAD     7 minutes and 8 seconds
10    06:02:09 PM 11/22/2017                1 hour, 7 minutes and 54 seconds   07:10:03 PM 11/22/2017   BAD   11 minutes and 30 seconds
11    07:21:33 PM 11/22/2017               1 hour, 58 minutes and 32 seconds   09:20:05 PM 11/22/2017    OK                   5 seconds
12    09:20:10 PM 11/22/2017                       14 minutes and 52 seconds   09:35:02 PM 11/22/2017   BAD    5 minutes and 52 seconds
13    09:40:54 PM 11/22/2017                         4 minutes and 6 seconds   09:45:00 PM 11/22/2017   BAD    4 minutes and 51 seconds
14    09:49:51 PM 11/22/2017             11 hours, 15 minutes and 10 seconds   09:05:01 AM 11/23/2017   BAD    7 minutes and 20 seconds
15    09:12:21 AM 11/23/2017      3 days, 2 hours, 17 minutes and 40 seconds   11:30:01 AM 11/26/2017   BAD   27 minutes and 44 seconds
16    11:57:45 AM 11/26/2017   109 days, 19 hours, 12 minutes and 37 seconds   07:10:22 AM 03/16/2018    OK                  17 seconds
17    07:10:39 AM 03/16/2018     25 days, 3 hours, 55 minutes and 59 seconds   12:06:38 PM 04/10/2018    OK                   3 seconds
18    12:06:41 PM 04/10/2018      8 days, 19 hours, 3 minutes and 20 seconds   07:10:01 AM 04/19/2018   BAD    3 minutes and 52 seconds
19    07:13:53 AM 04/19/2018     77 days, 9 hours, 44 minutes and 39 seconds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.