web-dev-qa-db-ja.com

コマンドラインから、マシンの再起動が必要かどうかを確認するにはどうすればよいですか?

Ubuntu Desktopに特定の更新(新しいカーネルなど)をインストールすると、再起動が必要であるという通知が表示されます(Lucidでは、ログアウトアイコンが赤に変わります)。

Ubuntu serverの再起動が必要かどうかをコマンドラインから確認するにはどうすればよいですか?

/etc/motdで「システムの再起動が必要」をgrepできましたが、よりエレガントなソリューションが欲しいです。また、古いリリースで機能するソリューションが必要です。ハーディ(8.04 LTS)。

250
Marius Gedminas

ファイル/var/run/reboot-requiredが存在するかどうかを単純に確認できます。

たとえば、これらのいずれも、再起動する必要がない場合は「該当するファイルがありません」または「ファイルが見つかりません」と表示されます。

file /var/run/reboot-required
stat /var/run/reboot-required
ls /var/run/reboot-required

Bashスクリプトでは、次を使用できます。

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi
283
Weboide

パッケージdebian-goodiesにはcheckrestartという名前のコマンドがあり、これは非常に便利です。その出力は、完全な再起動を回避するのに役立ちます。

どの実行中のアプリケーションが、アプリケーションの実行中にアップグレードされた共有ライブラリをロードしたかを示します。その後、アプリケーションとサービスを手動で再起動し、完全な再起動を避けます。ただし、カーネルのアップグレードには役立ちません。

44
aquaherd

通常、ファイル

/var/run/reboot-required 

再起動する必要があります。このファイルが存在するかどうかは、gnome-terminalでこの簡単なコマンドを使用して確認できます。

ls /var/run/reboot-required
33
kone4040

他の人が書いた最も直接的なメソッドと同様に、 byob -GNUスクリーンをもう少し使いやすくするためのスクリプトのセットを使用すると便利な指示があります。画面の下部に一連の情報が表示され、再起動が必要かどうか、更新が利用可能かどうか、時間、稼働時間、使用メモリなどを含めることができます...

このスクリーンショットでは、_背景が赤の199!から、199のアップデートが利用可能であることがわかります。 A !!一部はセキュリティ更新であることを意味します 。フォアグラウンドのメニューは、どのステータス通知を表示するかを選択しています。

再起動が必要な場合は、下部のバーに青い背景に白いテキストで表示されるシンボル(R)で示されます。詳細およびその他のインジケータについては、 byobu man page を参照してください。

screenshot

17
Hamish Downer

/etc/motdファイルは、/var/run/reboot-requiredファイルから再起動が必要かどうかに関する情報を取得します。

cat /etc/motdコマンドを使用して、ターミナルでこのファイルの内容を確認できます

9
ajmitch

.bash-aliasesファイルに次を追加しました。

alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'

この比較的単純なタスクのためにパッケージをインストールするよりも簡単に見えました。それから私はちょうど実行します:

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 
7
Capricorn1

Reboot-notifierまたはupdate-notifier-commonパッケージがインストールされている場合、ファイル/ var/run/reboot-requiredおよび/var/run/reboot-required.pkgsを取得します

reboot-notifierはUbuntu WilyおよびXenialでより新しいです。 Debianストレッチ、ただしjessie-backports

update-notifier-commonXenialおよびDebian Wheezyを含むすべてのUbuntuバージョンで古い。 Debian StretchやJessieにはありません。

https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ にリブート通知パッケージの背景があります)

これらのパッケージがインストールされていない場合は、インストールされているlinuxパッケージのバージョンと実行中のバージョンを比較できます。

tim@tramp:~$ dpkg -l linux-image-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-=======================================================================
ii  linux-image-3.16.0-4-AMD64        3.16.7-ckt20-1+deb8u4 AMD64                 Linux 3.16 for 64-bit PCs
ii  linux-image-AMD64                 3.16+63               AMD64                 Linux for 64-bit PCs (meta-package)
tim@tramp:~$ more /proc/version
Linux version 3.16.0-4-AMD64 ([email protected]) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

ここで、インストールされている最新のカーネルは3.16.7-ckt20-1 + deb8u4ですが、実行中のカーネルは3.16.7-ckt20-1 + deb8u3であることがわかります。そのため、このシステムを再起動する必要があります。最後のu4とu3。

上のボックスをスクロールする必要があるかもしれません。/proc/versionでは、行末近くのバージョンが重要です。

非常にマイナーなバージョンコードの変更は、Debianセキュリティカーネルアップデートの典型的なものです。

再起動が必要

別のオプションは、needrestartパッケージをインストールすることです。

Sudo apt-get install needrestart
Sudo needrestart -k

カーネルのアップグレード後にneedrestartがインストールされた場合でも動作しているようです。

7
Tim Bray

貧乏人の解決策:

#!/bin/bash
default=$(sed -n 's/^default[   ]*\([0-9][0-9]*\).*/\1/p' /boot/grub/menu.lst | tail -1)
if [ "$default" = "" ]; then default=0; fi

want=$(sed -n 's/^kernel[       ]*\/boot\/vmlinuz-\([^  ]*\).*/\1/p' /boot/grub/menu.lst | sed -n "$((default+1))p")

running=$(uname -r)

if [ "$running" = "$want" ]
then
        : OK, do nothing
else
        echo "Running $running, want $want. Reboot required."
fi

(注意:内部に空白がある3つの角括弧の場合は、「[<space> <tab>]」である必要があります。)