명령 줄에서 시스템을 재부팅해야하는지 어떻게 알 수 있습니까?


256

Ubuntu Desktop에 특정 업데이트 (예 : 새 커널)를 설치하면 재부팅이 필요하다는 표시가 나타납니다 (Lucid에서 로그 아웃 아이콘이 빨간색으로 바)).

명령 행에서 Ubuntu 서버 를 재부팅 해야하는지 어떻게 확인할 수 있습니까?

에서 '시스템 다시 시작 필요'를 grep 할 수는 /etc/motd있지만 더 우아한 솔루션을 원합니다. 또한 Hardy (8.04 LTS)와 같은 이전 릴리스에서 작동하는 솔루션을 원합니다.


서버를 유지 관리하는 경우 곧 다시 시작해야하는지 또는 업데이트하지 않아도됩니다. 대부분의 업데이트는 다시 시작하거나 서비스를 다시 시작할 필요가 없습니다 (자동으로 전환해야 함).
— eXlin

답변:


289

파일 /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

1
이것은 작동하며 Hardy에서도 작동합니다. (아직도 여전히 하나의 시스템에있는 Dapper-6.06에서는 작동하지 않습니다. 터프합니다.) 우연히 / var / run / reboot-required 파일은 / usr / share / update-notifier / notify-reboot에 의해 생성됩니다. -다양한 패키지의 관리자 스크립트에서 호출해야합니다.
— Marius Gedminas

2
업데이트 알림 패키지를 설치하면 Dapper에서도 작동합니다. 단, 고대 서버에 120 megs의 그놈 항목을 가져 오는 것을 제외하고는.
— Marius Gedminas

10
update-notifier-common을 더 잘 설치하면 GUI에 의존하지 않지만 Dapper에는 존재하지 않습니다.
— Marius Gedminas

1
FWIW, update-notifier-common은 기본적으로 Lucid 서버에 설치되지 않습니다.
— Marius Gedminas

5
감사! 파일 /var/run/reboot-required.pkgs에는 재부팅이 필요한 패키지가 나열됩니다.
— nealmcb

44

패키지에서 debian-goodies checkrestart는 매우 유용한 명령 입니다. 출력으로 전체 재부팅을 피할 수 있습니다.

어떤 실행중인 응용 프로그램이 응용 프로그램을 실행하는 동안 업그레이드 된 공유 라이브러리를로드했는지 알려줍니다. 그런 다음 응용 프로그램과 서비스를 수동으로 다시 시작하고 전체 재부팅을 피하십시오. 그러나 커널 업그레이드에는 도움이되지 않습니다.


1
전체 재부팅을 피하려면 어떻게해야합니까?
— Oxwivi

11
응용 프로그램이 실행되는 동안 업그레이드 된 공유 라이브러리를로드 한 실행중인 응용 프로그램을 알려줍니다. 그런 다음 응용 프로그램과 서비스를 수동으로 다시 시작하고 전체 재부팅을 피하십시오. 그러나 커널 업그레이드에는 도움이되지 않습니다.
— aquaherd

이것이 최고의 답변이되어야합니다. 매우 도움이됩니다. OpenSUSE에는 도구가 내장되어 있으며이를 실행하는 데 도움이됩니다. 부끄러운 우분투는 "다시 시작, 다시 시작"합니다. 예를 들어 색상을 다시 시작해야했습니다. 따라서 다시 시작할 필요가 없습니다.
— Shiki

@aquaherd 매우 유용한 의견-답변으로 옮겨 갈 가치가 있습니까?
— 던컨 존스

33

일반적으로 파일이

/var/run/reboot-required 

존재해야 재부팅합니다. gnome-terminal에서이 간단한 명령을 사용하여이 파일이 있는지 확인할 수 있습니다.

ls /var/run/reboot-required

이 파일은 더 이상 update-notifier-common에서 생성되지 않은 것으로 보입니다.
— Scott

17

다른 사람이 작성한 가장 직접적인 방법뿐만 아니라 byobu 를 사용 하면 GNU 화면을 좀 더 사용자 친화적으로 만드는 스크립트 세트가 있습니다. 화면 하단에 일련의 정보가 표시되며 업데이트 사용 가능 여부, 시간, 가동 시간, 메모리 사용 여부와 함께 재부팅이 필요한지 여부가 포함될 수 있습니다 ...

이 스크린 샷 199!에서 맨 아래 줄에 빨간색 배경으로 199 개의 업데이트가 있음을 알 수 있습니다. A는 !! 일부 보안 업데이트 것을 의미합니다 . 포 그라운드의 메뉴는 표시 할 상태 알림을 선택합니다.

재부팅이 필요한 경우 (R)하단 막대에 파란색 배경에 흰색 텍스트가 표시된 기호로 표시됩니다. 자세한 내용 및 기타 지표는 byobu 매뉴얼 페이지 에서 확인할 수 있습니다 .

스크린 샷


9

/etc/motd파일은 다시 부팅에서 필요 여부에 대한 해당 정보를 얻을 /var/run/reboot-required파일.

cat /etc/motd명령 을 사용하여 터미널에서이 파일의 내용을 확인할 수 있습니다


update-notifier-common이 이것을 생성하는데 더 이상 사용하지 않습니다
— Scott

8

reboot-notifier 또는 update-notifier-common 패키지가 설치되어 있으면 / var / run / reboot-required 및 /var/run/reboot-required.pkgs 파일이 생성됩니다.

reboot-notifier 는 Ubuntu Wily 및 Xenial에서 최신입니다. 데비안 스트레치, 그러나 jessie-backports

update-notifier-common Xenial 및 Debian Wheezy를 포함한 모든 Ubuntu 버전에서 이전 버전입니다. 데비안 스트레치 나 제시에는 없습니다.

( https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ 의 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 대 u3이 있습니다.

위의 상자를 스크롤해야 할 수도 있습니다. / proc / version에서는 중요한 행 끝 부분의 버전입니다.

아주 작은 버전의 코드 변경은 일반적인 데비안 보안 커널 업데이트입니다.

다시 시작해야

다른 옵션은 needrestart패키지 를 설치하는 것 입니다.

sudo apt-get install needrestart
sudo needrestart -k

커널을 업그레이드 한 후 needrestart가 설치되어 있어도 작동하는 것 같습니다.


1
첫 번째 단락은 우분투 버전과 어떤 관련이 있습니까?
— muru

좋은 지적. 감사. 나는 그 비트를 놓친 패키지를 테스트하고 시험하는 데 오랜 시간을 보냈습니다. 우분투 패키지 정보를 명확하게하고 포함하도록 편집했습니다.
— Tim Bray

8.04로 돌아가서 다시 시작해야하는 업데이트 후 Cog가 빨간색으로 바뀝니다. 그 행동을 어떻게 되 찾을 수 있습니까?
— PenguinCSC

우분투 14.04, 나는dpkg-query: no packages found matching linux-image-*
— the_nuts

Unknown option: k우분투 14.04에서.
— Cees Timmerman

7

.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:~$ 

1

불쌍한 사람의 해결책 :

#!/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>]"이어야합니다.)


grub 2는 /boot/grub/menu.lst를 더 이상 사용하지 않습니다. 이제는 /boot/grub/grub.cfg입니다.
— Marius Gedminas

-1

질문에 대한 답변은 아니지만 몇 가지 응답에 대한 경고 는 재부팅이 실제로 필요한지 여부에 대한 신뢰할 수있는 출처 /var/run/reboot-required가 아닙니다 .

간단한 테스트 : 새 커널을 사용할 수있게되면 설치하고 재부팅하십시오. 재부팅 후 apt autoremove더 이상 필요하지 않은 오래된 커널을 제거하기 위해 실행하십시오 . 실행 한 후에는 재부팅이 필요하다는 메시지가 표시됩니다.


3
커널을 제거하면 grub 설정 파일이 다시 생성되고, 그 후에도 여전히 부팅 할 수 있는지 확인하기 위해 재부팅하는 것이 좋습니다. 적어도 그것이 내가 (나)이 특징을 나 자신에게 정당화하는 방법입니다.
— Marius Gedminas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.