Как я могу сказать, из командной строки, требуется ли перезагрузка компьютера?

213

Когда вы устанавливаете определенные обновления (например, новое ядро) в Ubuntu Desktop, вы получаете указание, что требуется перезагрузка (в Lucid значок выхода становится красным).

Как проверить, из командной строки, требуется ли перезагрузка Ubuntu server ?

Я мог бы grep для «Требуется перезагрузка системы» в /etc/motd , но я бы хотел, чтобы более элегантное решение. Кроме того, я хочу решение, которое работает в более старых версиях, например. Харди (8.04 LTS).

    
задан Marius Gedminas 28.07.2010 в 23:49
источник

8 ответов

245

Вы можете просто проверить, существует ли файл /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
    
ответ дан Weboide 29.07.2010 в 00:02
источник
39

В пакете debian-goodies есть команда с именем checkrestart, которая весьма полезна. Его выход может помочь вам избежать полной перезагрузки.

    
ответ дан aquaherd 09.09.2011 в 16:51
31

Обычно, если файл

/var/run/reboot-required 

существует перезагрузка. Вы можете увидеть, есть ли этот файл, используя эту простую команду в gnome-terminal.

ls /var/run/reboot-required
    
ответ дан kone4040 28.07.2010 в 23:59
17

Как и самые прямые методы, написанные другими, есть удобный признак, если вы используете byobu - набор скриптов для создания экрана GNU немного более удобным для пользователя. Он показывает набор информации в нижней части экрана, и это может включать в себя необходимость перезагрузки - вместе с тем, доступны ли обновления, время, время безотказной работы, используемая память ...

В этом скриншоте вы можете увидеть из 199! в нижней строке с красным фоном, что доступно 199 обновлений, а ! означает, что некоторые из них - обновления для системы безопасности. Меню на переднем плане выбирает, какие статусные уведомления должны отображаться.

Если требуется перезагрузка, это будет отображаться символом (R) , отображаемым на нижней панели с белым текстом на синем фоне. Более подробную информацию и другие показатели можно прочитать в странице пользователя byobu .

    

ответ дан Hamish Downer 29.07.2010 в 19:59
9

Файл /etc/motd получает информацию о том, требуется ли перезагрузка из файла /var/run/reboot-required .

Вы можете проверить содержимое этого файла в терминале с помощью команды cat /etc/motd

    
ответ дан ajmitch 28.07.2010 в 23:53
5

Я добавил следующее в файл .bash-aliases:

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

Казалось проще, чем установить пакет для этой относительно простой задачи. Затем я просто запускаю:

[email protected]:~$ rr
No reboot needed
[email protected]:~$ 
    
ответ дан Capricorn1 16.12.2016 в 14:22
5

Если у вас установлены установленные для перезагрузки-уведомления или обновления-уведомления-общие пакеты, вы получаете файлы / var / run / reboot-required и /var/run/reboot-required.pkgs

reboot-notifier является более новым в Ubuntu Wily и Xenial. Debian растягивается, но в jessie-backports

update-notifier-common старше, во всех версиях Ubuntu, включая Xenial и Debian Wheezy. Не в Debian Stretch или Jessie.

(В пакете reboot-notifier имеется некоторый фон Ссылка )

Если у вас нет этих пакетов, вы можете сравнить версию установленного пакета linux с версией:

[email protected]:~$ 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)
[email protected]:~$ 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 vs u3 в конце.

Вам может потребоваться прокрутить окно выше. В / proc / version это версия, близкая к концу строки, имеет значение.

Очень незначительное изменение кода версии типично для обновления ядра безопасности Debian.

needrestart

Другой вариант - установить пакет needrestart .

sudo apt-get install needrestart
sudo needrestart -k

Кажется, работает, даже если needrestart был установлен после обновления ядра.

    
ответ дан Tim Bray 06.03.2016 в 22:48
0

Не ответ на этот вопрос, но предостережение относительно нескольких ответов: /var/run/reboot-required не надежный источник того, действительно ли требуется перезагрузка.

Простой тест: когда новое ядро ​​становится доступным, установите его, перезагрузите. После перезагрузки запустите apt autoremove , чтобы избавиться от старых, более не требуемых ядер. После того, как вы запустите это, будет указано, что требуется перезагрузка, что является полным бессмысленным.

    
ответ дан tink 14.09.2017 в 09:09