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


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

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

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


219
2017-07-28 21:49


происхождения


Если вы поддерживаете сервер, вы скоро также будете развивать смысл, или обновление не потребует перезагрузки. Большинство обновлений не требует перезагрузки или перезапуска службы (ведь это должно делать автоматически). - eXlin


ответы:


Вы можете просто проверить, является ли файл /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

257
2017-07-28 22:02



Это работает, и это работает и на Харди. (Не работает на Dapper - 6.06), который у меня все еще есть на одной машине. Tough.) Кстати, файл / var / run / reboot-required создается / usr / share / update-notifier / notify-reboot -required, который вызывается из сценариев поддержки различных пакетов. - Marius Gedminas
Он также работал бы на Dapper, если бы я установил пакет update-notifier, за исключением того, что он хочет вытащить GNOME на 120 мегабайт на мой старый сервер. - Marius Gedminas
Лучше установить update-notifier-common, это не зависит от каких-либо файлов GUI (но не существует для Dapper). - Marius Gedminas
FWIW, update-notifier-common не установлен на сервере Lucid по умолчанию. - Marius Gedminas
Благодаря! и файл /var/run/reboot-required.pkgs будут перечислены пакеты, требующие перезагрузки. - nealmcb


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


39
2017-09-09 14:51



Как это может заставить меня избежать полной перезагрузки? - Oxwivi
Он сообщает вам, какие запущенные приложения загружали разделяемые библиотеки, которые были обновлены во время работы приложения. Затем вы перезапускаете приложения и службы вручную и избегаете полной перезагрузки. Тем не менее, это не помогает при обновлении ядра. - aquaherd
Это должен быть главный ответ. Очень полезно. OpenSUSE получил встроенный инструмент (а также поможет вам как его запустить). Позор Ubuntu просто «перезагрузится, перезагрузится». Например, здесь требуется перезагрузка. Следовательно, нет необходимости перезапускать. - Shiki
@aquaherd Очень полезный комментарий - может быть стоит переместить это в ваш ответ? - Duncan Jones


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

/var/run/reboot-required 

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

ls /var/run/reboot-required

32
2017-07-28 21:59



Этот файл больше не создается из общего обновления-уведомления, который использовался для его создания. - Scott


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

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

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

byobu screenshot


17
2017-07-29 17:59





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

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


9
2017-07-28 21:53



update-notifier-common используется для создания этого, но больше не работает - Scott


Я добавил следующее в файл .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:~$ 

6
2017-12-16 13:22





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

перезагрузка-уведомитель новее в Ubuntu Wily и Xenial. Debian растягивается, но в jessie-backports

Обновление-уведомитель-общий Является старше, во всех версиях Ubuntu, включая Xenial и Debian Wheezy. Не в 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 (debian-kernel@lists.debian.org) (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 был установлен после обновления ядра.


5
2018-03-06 21:48



Как ваш первый абзац соотносится с версиями Ubuntu? - muru
Хорошая точка зрения. Благодарю. Я потратил столько времени на тестирование и тестирование пакетов, которые я пропустил. Я редактировал, чтобы сделать более четким и включить информацию о пакете ubuntu. - Tim Bray
Вернемся к 8.04, после обновления, требующего перезагрузки, Cog станет красным. Как мне вернуть это поведение? - PenguinCSC
Ubuntu 14.04, я получаю dpkg-query: no packages found matching linux-image-* - the_nuts
Unknown option: k в Ubuntu 14.04. - Cees Timmerman


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

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


-1
2017-09-14 07:09



Ну, удаление ядра повторно создает файл конфигурации grub, после чего, вероятно, стоит перезагрузить компьютер, чтобы убедиться, что вы все еще можете загрузиться. По крайней мере, именно так я оправдываю эту (неправильную) функцию для себя. - Marius Gedminas