“服务重启”和“服务重新加载”有什么区别

nxz*_*xzr 85 server postgresql services

我试图理解之间的差异service restart [someservice]service reload [someservice]。我知道在restart重新reload加载配置的同时重新启动服务。但是我不太了解这的实际含义,无法确定我应该在给定的上下文中使用哪个。

一个例子:我读过的大多数设置 PostgreSQL 的指南都说,一旦我编辑postgresql.confpg_hba.conf允许远程连接,我应该运行:

sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)

但是,如果我根据上面的描述猜测要使用哪个,我会选择reload.

万一重要,我在 Ubuntu 11.10 上,尽管我希望尽可能普遍适用的解释。

Abd*_*UMI 72

  • 重启= 停止 + 开始
  • 重新加载= 保持运行 + 重新读取配置文件。


小智 46

你说的是对的,reload告诉服务重新加载它的配置文件。这意味着重新加载配置就足够了;但是,可能存在“不遵守规则”或不会重新加载配置文件的某些服务。因此,使用restart. 我个人不使用postgresql,所以我不知道。

  • 同时,还有“重新加载或重新启动” (3认同)
  • @WillSheppard 您可以通过“man systemctl”或[此处](https://www.man7.org/linux/man-pages/man1/systemctl.1.html)找到该手册。_重新加载一个或多个单位(如果它们支持)。如果没有,请停止然后启动它们。如果这些单元尚未运行,它们将启动。_ (2认同)

Mar*_*nas 9

并非所有服务都支持reload。对于那些这样做的人,通常最好重新启动(即重新加载导致更少或没有停机时间)。

Debian 政策手册规定每个/etc/init.d/脚本都应该支持一个force-reload动作,这意味着reload服务是否支持它,以及restart该服务是否不支持重新加载。

我不确定这如何转化为现代 Ubuntu 新贵世界。


小智 5

展开\xd8\xb9\xd8\xa8\xd8\xaf \xd8\xa7\xd9\x84\xd9\x86\xd9\x88\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x88 \xd9\x85\xd9\x8a以我使用 systemd 的经验回答。

\n\n

在 systemd 中,每当启动进程时,它都会在 systemd 上下文中运行,最明显的例子是在其单元文件中定义环境变量。

\n\n

因此,当您发送systemctl reload [someservice]信号时,它会向服务发送一个信号,以便在支持的情况下优雅地重新加载自身。如果不是,该进程将简单地忽略该信号。但这是可配置的。

\n\n

我说的优雅是什么意思?使用新配置或代码启动新工作人员,并在旧工作人员完成服务当前请求(如果有)时停止旧工作人员。

\n\n

如果你成功了,systemctl restart [someservice]它会告诉 systemctl 告诉服务停止,销毁当前的 systemd 上下文,创建一个新的上下文并再次运行该服务。例如,在 systemd 上下文中重新加载环境变量或者不支持重新加载时,这是有意义的。

\n\n

希望这能澄清一点,如果我错了,请告诉我。

\n