AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 164
Accepted
Marius Gedminas
Marius Gedminas
Asked: 2010-07-29 13:49:10 +0800 CST2010-07-29 13:49:10 +0800 CST 2010-07-29 13:49:10 +0800 CST

如何从命令行判断机器是否需要重新启动?

  • 772

当您在 Ubuntu Desktop 中安装某些更新(例如新内核)时,您会收到需要重新启动的指示(在 Lucid 中,注销图标变为红色)。

如何从命令行检查 Ubuntu服务器是否需要重新启动?

我可以 grep 中的“需要系统重启” /etc/motd,但我想要一个更优雅的解决方案。另外,我想要一个适用于旧版本的解决方案,例如 Hardy (8.04 LTS)。

package-management command-line
  • 10 10 个回答
  • 95559 Views

10 个回答

  • Voted
  1. Best Answer
    Weboide
    2010-07-29T14:02:02+08:002010-07-29T14:02:02+08:00

    您可以简单地检查文件是否/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
    
    • 340
  2. aquaherd
    2011-09-10T06:51:21+08:002011-09-10T06:51:21+08:00

    在软件包 debian-goodies 中有一个名为的命令checkrestart,它非常有用。它的输出可以帮助您避免完全重启。

    它告诉您哪些正在运行的应用程序加载了在应用程序运行时升级的共享库。然后手动重新启动应用程序和服务并避免完全重新启动。但是,对内核升级没有帮助。

    • 53
  3. kone4040
    2010-07-29T13:59:00+08:002010-07-29T13:59:00+08:00

    通常如果文件

    /var/run/reboot-required 
    

    存在你应该重新启动。您可以通过在 gnome-terminal 中使用这个简单的命令来查看该文件是否存在。

    ls /var/run/reboot-required
    
    • 34
  4. Hamish Downer
    2010-07-30T09:59:23+08:002010-07-30T09:59:23+08:00

    除了其他人编写的最直接的方法外,还有一个方便的指示,如果您使用byobu - 一组使 GNU 屏幕更加用户友好的脚本。它在屏幕底部显示一组信息,其中可能包括是否需要重新启动 - 以及更新是否可用、时间、正常运行时间、使用的内存......

    在此屏幕截图中,您可以从199!带有红色背景的底行看到有 199 个可用更新。A!! 表示有些是安全更新。前台的菜单正在选择应显示哪些状态通知。

    如果需要重新启动,则这将由(R)下方栏中显示的符号指示,该符号带有蓝色背景上的白色文本。更多细节和其他指标可以在byobu 手册页中阅读。

    截屏

    • 19
  5. Tim Bray
    2016-03-07T13:48:11+08:002016-03-07T13:48:11+08:00

    如果您安装了 reboot-notifier 或 update-notifier-common 软件包,那么您将获得文件 /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 中。

    ( 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 ([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软件包。

    sudo apt-get install needrestart
    sudo needrestart -k
    

    即使在内核升级后安装了needrestart,似乎也能正常工作。

    • 11
  6. ajmitch
    2010-07-29T13:53:41+08:002010-07-29T13:53:41+08:00

    该/etc/motd文件从文件中获取有关是否需要重新启动的信息/var/run/reboot-required。

    cat /etc/motd您可以使用命令在终端中检查此文件的内容

    • 9
  7. Capricorn1
    2016-12-17T05:22:46+08:002016-12-17T05:22:46+08:00

    我将以下内容添加到我的 .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:~$ 
    
    • 9
  8. Enrique Perez-Terron
    2018-12-05T06:29:51+08:002018-12-05T06:29:51+08:00

    穷人的解决方法:

    #!/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
    

    注意:方括号里面有空格的三种情况应该是“[ <space> <tab> ]”。

    • 1
  9. tink
    2017-09-14T23:09:22+08:002017-09-14T23:09:22+08:00

    不是对这个问题的回答,而是对几个回答的警告: /var/run/reboot-required不是实际是否需要重新启动的可靠来源。

    简单测试:当新内核可用时,安装它,重新启动。重新启动后,运行apt autoremove以摆脱一些不再需要的旧内核。运行后,它会指出需要重新启动,这完全是胡说八道。

    • 0
  10. Brian Smith
    2021-04-23T05:18:12+08:002021-04-23T05:18:12+08:00

    如果你使用 nagios:

    ./check_file_age -i -f /var/run/reboot-required -w 86400 -c 604800
    

    只需更改警告/暴击的时间(以秒为单位)

    • 0

相关问题

  • 有没有办法重置所有包/源并从头开始?

  • 文件权限如何工作?文件权限用户和组

  • 如何回滚到 PHP 5.2?

  • 包管理器之间有什么区别?

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve