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

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

我试图理解service restart [someservice]和之间的区别service reload [someservice]。我知道这restart会重新启动服务,而会reload重新加载配置。但我不太了解这方面的实际含义,无法确定在特定情况下应该使用哪一个。

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

sudo service postgresql restart

但是,如果我根据上述描述猜测该使用哪一个,我会选择reload

如果有什么问题的话,我在用 Ubuntu 11.10,不过我希望得到尽可能普遍适用的解释。

答案1

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

答案2

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

答案3

并非所有服务都支持reload。对于支持的服务,通常最好重新启动(即重新加载会减少或不会导致停机)。

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

我不确定这在现代 Ubuntu 新贵世界中意味着什么。

答案4

信号细节对于重新加载可能很重要。
大多数情况下,这都是关于向服务进程发送适当的信号(SIGHUP)。如果底层应用程序具有某种“实时配置重新应用”策略,那么服务单元文件中很可能应该有一行以“ExecReload=”开头。这意味着重新加载是可选的,您需要检查应用程序是否实现重新加载:(docker ie)

cat $(echo $(systemctl show -p FragmentPath docker) | cut -d "=" -f 2)

重启只是停止-启动。Systemd 只需要知道正确的“ExecStart”命令即可启动。

相关内容