daemon-reload和reload之间有什么区别?

daemon-reload - 加载正在运行的指定单元的单元配置文件,以便在不停止服务的情况下进行单元文件配置更改。请注意,这与重新加载命令不同。
reload - 加载正在运行的指定单元的服务配置文件,以便在不停止服务的情况下进行服务配置更改。请注意,这与daemon-reload命令不同。
这里的"unit"和"service"是什么意思?例如,apache2.service是一个具有服务类型的单元。那么上述描述中的"service"是指什么?
1个回答

daemon-reload会重新加载systemd文件。如果您在/etc/systemd/system/中更改了一个服务文件,daemon-reload将重新加载这些文件。

例如,您意识到您需要在服务之间有5秒的超时时间。您在服务文件中添加了该超时时间,并进行了一次daemon-reload。这将导致下次服务重新启动时出现超时。该更改不会影响服务配置。

reload将重新加载特定的服务。这意味着systemd将向服务发送一个SIGHUP信号,该信号告诉服务重新加载其配置文件,这与systemd的配置文件无关。

例如,apache有一个名为httpd.conf的文件。使用reload,systemd将向正在运行的apache发送SIGHUP信号,告诉它重新加载配置文件。然而,这并不会改变systemd对该服务的处理方式。

使用reload时,您必须提供额外的参数,告诉systemd要向哪些服务发送SIGHUP信号。而使用daemon-reload时,您不需要提供任何额外的参数,因为systemd会检查所有的服务文件是否有更改并重新加载它们。

虽然手册上没有写,但我猜想为了使重新加载成功,服务必须支持重新加载。否则,你就得重启它来强制重新加载配置。

所以,daemon reload会重新加载具有最新更改的单元。但是reload只会重新加载特定的服务。我的理解正确吗? - teja_M19
@teja_M19 是的。deamon-reload 不会以任何方式影响正在运行的服务。daemon-reload 是针对 systemd 的重新加载命令,而 reload 是针对特定服务的重新加载命令。 - nobody
酷!谢谢,伙计✌️✌️ - teja_M19