我试图理解service restart [someservice]
和之间的区别service reload [someservice]
。我知道这restart
会重新启动服务,而会reload
重新加载配置。但我不太了解这方面的实际含义,无法确定在特定情况下应该使用哪一个。
一个例子:我读过的大多数关于设置 PostgreSQL 的指南都说,一旦我编辑postgresql.conf
并pg_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”命令即可启动。