web-dev-qa-db-ja.com

スタンバイから最後にウェイクアップしてからの稼働時間を確認する方法

スタンバイから最後にウェイクアップしてからの稼働時間を知りたい。

コマンドuptimeは、現在の時刻から最後の起動時刻を引いた値の差のみを表示します。

32
debian user

/var/log/pm-suspend.logで、次のような最終行を探します。

Sun Dec 16 09:30:31 CET 2012: Awake.

それが最後のウェイクアップ時間です。それ以降、ポールが提案した方法で稼働時間を計算できます。

logrotateは定期的にログを「ローテーション」して、ログが大きくなりすぎないようにするため、空のpm-suspend.logファイルが見つかる場合があります。この場合は、pm-suspend.log.1ファイルを探します(pm-suspend.log.2.gzなどの名前の付いた他のログファイルも見つかる場合があります。zcatまたはzlessを使用して調べることができます)。

30
steps

Systemdを実行しているデスクトップ/サーバーの場合、(私が知る限り)情報を直接伝える直接コマンドはありませんが、すべてのデータがジャーナルにキャプチャされます。

たとえば、ジャーナルをgrepできます。

echo ">> [SUSPEND] Times during current boot"
journalctl -b 0 |grep "]: Suspending system..."
echo ">> [WAKE] Times during current boot"
journalctl -b 0 |grep "PM: Finishing wakeup"

または、派手な出力のために、私はpython3スクリプトを書きました(Fedora 23で正常に実行されます)サンプル出力:

Initial Boot Timestamp:  2016-01-15 09:31:32 

     Wake Timestamp     |    Suspend Timestamp   |       Awake Time       |
  --------------------  |  --------------------  |  --------------------  |
   2016-01-15 09:31:32  |   2016-01-15 09:36:03  |          0h  4m        |
   2016-01-15 09:36:22  |   2016-01-15 19:15:04  |          9h 38m        |
   2016-01-15 19:22:21  |   2016-01-15 20:00:05  |          0h 37m        |
   ...
   -------------------  |  --------------------  |  --------------------  | 

Summary: Days Since Boot [8.23] | Days Awake [4.14] | Suspend/Wake Cycles: [28]

スクリプトはgithubにあります。 githubリポジトリへのリンク

17
Ari

コンピューターを一時停止する方法は、pm-suspendプログラムだけではありません。このプログラムの私のログは現在空ですが、より信頼できるコマンドが見つかりました:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed"

そして出力は:

Oct  2 09:11:48 dmatej-lenovo systemd-sleep[931]: Suspending system...
Oct  2 09:53:10 dmatej-lenovo systemd-sleep[931]: System resumed.
Oct  2 15:02:48 dmatej-lenovo systemd-sleep[27516]: Suspending system...
Oct  2 16:07:19 dmatej-lenovo systemd-sleep[27516]: System resumed.
Oct  2 16:32:48 dmatej-lenovo systemd-sleep[29622]: Suspending system...
Oct  2 17:16:41 dmatej-lenovo systemd-sleep[29622]: System resumed.
Oct  3 00:24:58 dmatej-lenovo systemd-sleep[21316]: Suspending system...
Oct  3 08:17:22 dmatej-lenovo systemd-sleep[21316]: System resumed.
Oct  3 09:09:25 dmatej-lenovo systemd-sleep[24739]: Suspending system...
Oct  3 09:50:47 dmatej-lenovo systemd-sleep[24739]: System resumed.
13
dmatej

私のマシンにはpm-suspend.logがありませんでした。

これは私のために働きました:

/usr/bin/pmset -g log | grep Wake | grep "due to" | tail -n1

何がコンピュータを起こしたかについても言います。 :-)

2
Mike

これらの答えはどれもうまくいきませんでした。しかし、これのために作成されたsleep.targetは便利に見つかりました。

$ journalctl -n4 -u sleep.target
nov. 17 17:16:37 kaa systemd[1]: Reached target Sleep.
nov. 17 18:46:22 kaa systemd[1]: Stopped target Sleep.
nov. 17 19:27:31 kaa systemd[1]: Reached target Sleep.
nov. 17 19:45:21 kaa systemd[1]: Stopped target Sleep.
1

ステップの回答の修正されたバージョン

grep ': Awake' /var/log/pm-suspend.log

コメントを編集してください笑:D

1
Jacek Pietal

Ubuntu 19.04での最後のウェイクアップ時間を知りたい場合は、次のこともできます。

grep sleep /var/log/auth.log*

auth.log.1:Feb 29 17:49:12 systemd-logind[694]: Operation 'sleep' finished.
auth.log.1:Mar  1 09:39:01 systemd-logind[694]: Operation 'sleep' finished.

私が使用を提案した他の回答のようなpm-suspendファイルがないため、この回答を追加します。

0
viktorsmari

tuptime を使用して、システムの起動/シャットダウンの寿命を追跡できます。

0
Rfraile

スタンバイを開始するために何を使用していますか?

スクリプトを使用できる場合は、行の後

echo -n "standby" > /proc/acpi/sleep

あなたはラインを持つことができます

echo `date +%s` >> /var/log/wakeups.log

または似たようなもの。つまり、マシンが起動したときに最初に行ったのは、現在の日時をログファイルに書き込むことでした(エポックからn秒後)。

次にtail -1 /var/log/wakeups.logはあなたに最後の時間を与えるでしょう。現在の時間からこれを引くと、最後のウェイクアップから秒数を得ることができます。

0
Paul

/ var/log/messagesで文字列「PM:デバイスの復元が完了しました」の最後の出現を検索します。マシンの稼働時間が長すぎる場合は、ログが回転している可能性があります。

0
teika kazura

拡張ステップの回答:

grep Awake /var/log/pm-suspend.log | tail -1

これにより、最後のウェイクアップ時間のラインが取得されます。

0
thethakuri

これは非常に堅実な方法だと思います。

systemd[1]: Started Run anacron jobs at resume

OSがanacronを起動したときに検索しますが、マシンの電源は入っていますが

0
Jay Day Zee