如何手动重启受 apt 升级影响的服务?

如何手动重启受 apt 升级影响的服务?

如何在不自动停止/启动守护进程的情况下发出 apt 升级?我想手动重启服务。

举一个具体的例子:

我将重新访问一台长期运行的机器并运行sudo apt-get update && time sudo apt-get dist-upgrade。这是一种查看所有可用升级的非常直接的方法,然后只需按一下 Enter 键即可完全修补系统。

如果我postgresql-9.1在升级列表中看到,我会中止升级。在这种情况下,apt 会在升级过程的早期停止服务,应用几个不重要的操作,然后在很晚的时候重新启动服务。常规升级可能会导致几分钟的停机时间。

我想对升级说“是”以应用所有补丁,然后在方便的时候手动重启服务。

答案1

您可以使用在 Ubuntu 上同样有效的 Debian 策略层来防止服务重启。

示例:创建一个名为以下内​​容的文件/usr/sbin/policy-rc.d(不要忘记使该文件可执行):

#!/bin/sh

exit 101

不再会自动启动/停止/重新启动任何服务¹。请参阅/usr/share/doc/sysv-rc/README.policy-rc.d.gz详细信息以及如何调整它以忽略单个服务。

1. 只要安装脚本遵循 Debian 指南并使用invoke-rc.d 进行服务重启

答案2

我想对升级说“是”以应用所有补丁,然后在方便的时候手动重启服务。

抱歉,一般情况下您无法这样做。即使服务未重新启动,软件包也无法保证不重新启动服务的升级不会破坏任何东西(例如,任何动态加载的内容,如模块)。

如果您想要一个稳定的系统,您要么停止升级软件包,要么完全升级它,并重新启动服务。

我实际上无法在此指出可靠的来源,因为我无法证明否定的事实。Debian 政策与此相关;它根本不能提供您所寻求的保证。根据 Debian 政策,在 postinst 成功完成之前,包的功能不需要运行。因此,我们可以推断,如果 postinst 包含强制服务重启,那么它就需要发生。

其他一些可能对您有帮助的机制:

  1. 用于apt-get --download-only upgrade提前下载更新。
  2. 保留特定包裹升级后恢复。
  3. 了解“高可用性”,以便服务器可以依次升级而不会中断服务。对于 Postgres,这可能涉及某种复制配置。

答案3

有一个基于 CLI 的工具,名为系统配置信息安装 sysv-rc-conf。您也可以通过在终端中运行以下命令来安装它:

sudo apt-get install sysv-rc-conf

然后您可以通过运行以下命令激活/打开它:

sudo sysv-rc-conf

截屏:

在此处输入图片描述

相关内容