nxz*_*xzr 85 server postgresql services
我试图理解之间的差异service restart [someservice]
和service reload [someservice]
。我知道在restart
重新reload
加载配置的同时重新启动服务。但是我不太了解这的实际含义,无法确定我应该在给定的上下文中使用哪个。
一个例子:我读过的大多数设置 PostgreSQL 的指南都说,一旦我编辑postgresql.conf
并pg_hba.conf
允许远程连接,我应该运行:
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
但是,如果我根据上面的描述猜测要使用哪个,我会选择reload
.
万一重要,我在 Ubuntu 11.10 上,尽管我希望尽可能普遍适用的解释。
小智 46
你说的是对的,reload
告诉服务重新加载它的配置文件。这意味着重新加载配置就足够了;但是,可能存在“不遵守规则”或不会重新加载配置文件的某些服务。因此,使用restart
. 我个人不使用postgresql
,所以我不知道。
并非所有服务都支持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如果你成功了,systemctl restart [someservice]
它会告诉 systemctl 告诉服务停止,销毁当前的 systemd 上下文,创建一个新的上下文并再次运行该服务。例如,在 systemd 上下文中重新加载环境变量或者不支持重新加载时,这是有意义的。
希望这能澄清一点,如果我错了,请告诉我。
\n 归档时间: |
|
查看次数: |
108747 次 |
最近记录: |