Ubuntu Desktop에 특정 업데이트 (예 : 새 커널)를 설치하면 재부팅이 필요하다는 표시가 나타납니다 (Lucid에서 로그 아웃 아이콘이 빨간색으로 바)).
명령 행에서 Ubuntu 서버 를 재부팅 해야하는지 어떻게 확인할 수 있습니까?
에서 '시스템 다시 시작 필요'를 grep 할 수는 /etc/motd
있지만 더 우아한 솔루션을 원합니다. 또한 Hardy (8.04 LTS)와 같은 이전 릴리스에서 작동하는 솔루션을 원합니다.
Ubuntu Desktop에 특정 업데이트 (예 : 새 커널)를 설치하면 재부팅이 필요하다는 표시가 나타납니다 (Lucid에서 로그 아웃 아이콘이 빨간색으로 바)).
명령 행에서 Ubuntu 서버 를 재부팅 해야하는지 어떻게 확인할 수 있습니까?
에서 '시스템 다시 시작 필요'를 grep 할 수는 /etc/motd
있지만 더 우아한 솔루션을 원합니다. 또한 Hardy (8.04 LTS)와 같은 이전 릴리스에서 작동하는 솔루션을 원합니다.
답변:
파일 /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
/var/run/reboot-required.pkgs
에는 재부팅이 필요한 패키지가 나열됩니다.
패키지에서 debian-goodies checkrestart
는 매우 유용한 명령 입니다. 출력으로 전체 재부팅을 피할 수 있습니다.
어떤 실행중인 응용 프로그램이 응용 프로그램을 실행하는 동안 업그레이드 된 공유 라이브러리를로드했는지 알려줍니다. 그런 다음 응용 프로그램과 서비스를 수동으로 다시 시작하고 전체 재부팅을 피하십시오. 그러나 커널 업그레이드에는 도움이되지 않습니다.
다른 사람이 작성한 가장 직접적인 방법뿐만 아니라 byobu 를 사용 하면 GNU 화면을 좀 더 사용자 친화적으로 만드는 스크립트 세트가 있습니다. 화면 하단에 일련의 정보가 표시되며 업데이트 사용 가능 여부, 시간, 가동 시간, 메모리 사용 여부와 함께 재부팅이 필요한지 여부가 포함될 수 있습니다 ...
이 스크린 샷 199!
에서 맨 아래 줄에 빨간색 배경으로 199 개의 업데이트가 있음을 알 수 있습니다. A는 !!
일부 보안 업데이트 것을 의미합니다 . 포 그라운드의 메뉴는 표시 할 상태 알림을 선택합니다.
재부팅이 필요한 경우 (R)
하단 막대에 파란색 배경에 흰색 텍스트가 표시된 기호로 표시됩니다. 자세한 내용 및 기타 지표는 byobu 매뉴얼 페이지 에서 확인할 수 있습니다 .
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가 설치되어 있어도 작동하는 것 같습니다.
dpkg-query: no packages found matching linux-image-*
Unknown option: k
우분투 14.04에서.
불쌍한 사람의 해결책 :
#!/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>]"이어야합니다.)
질문에 대한 답변은 아니지만 몇 가지 응답에 대한 경고 는 재부팅이 실제로 필요한지 여부에 대한 신뢰할 수있는 출처 /var/run/reboot-required
가 아닙니다 .
간단한 테스트 : 새 커널을 사용할 수있게되면 설치하고 재부팅하십시오. 재부팅 후 apt autoremove
더 이상 필요하지 않은 오래된 커널을 제거하기 위해 실행하십시오 . 실행 한 후에는 재부팅이 필요하다는 메시지가 표시됩니다.