シャットダウン(または再起動)が進行中であるかどうかを検出できますか?

シャットダウン(または再起動)が進行中であるかどうかを検出できますか?

システムが起動したときに起動し、システムがシャットダウンしたときに終了するようにbashでスクリプトを作成しようとしています。私の考えは私自身のためのシステム稼働時間トラッカーを作ることでした。

そのために、毎日の稼働時間をファイルに保存したいと思います。ただし、ユーザー(またはシステム)がいつシャットダウンをトリガーするかを知る方法はありません。そうしないと、セッション終了時間をファイルに保存できないため、これは非常に重要です。

または、x期間後にループを実行し、現在の稼働時間を保存して実行することもできます。しかし、不要なディスク操作を実行するのは非効率的だと思います。

これには既製のソリューション(または基本コマンド)があるかもしれませんが、自分でコーディングしたいと思います。

ベストアンサー1

インストールスクリプトではなくログファイルを調べて、ほとんどの情報を取得できます。シャットダウン/再起動時にスクリプトを直接実行するには、システムに応じてsystemdスクリプトまたはinitスクリプトをインストールできます。実際にシャットダウン/開始イベントを測定するためのスクリプトをインストールしても競合は解決されないため、ログを確認する必要があります。

このファイルは/var/log/wtmp再起動を記録し、各起動の終わりにイベントを記録します。コマンドはlastこのファイルを解釈し、デフォルトでは開始間の時間を表示します(ただし、開始間の稼働時間は表示しません)。ただし、終了は記録されません。 wtmp エントリーを追加して wtmp から出口を記録するスクリプトを追加することもできます。

競合を解決するには、各再起動時間を調べて、/var/log/syslog*再起動時間があるファイルを見つけて、起動が開始される前の最初の項目に戻ってその時間を確認する必要があります。

tuptimeパッケージはほとんどのことを行い、正確にあなたが望むものかもしれません。

おすすめ記事