如何重新启动由 exec 启动的 squid 服务器

How to restart a squid server that is launched by exec

我目前正在编写一个程序来控制squid服务器的启动,其中我使用fork-exec以非后台模式和指定的配置文件启动squid服务器。在主进程中,我会通过向子进程发送信号来定期重新加载 squid 服务器。

但是,使用"kill -HUP"重新加载squid进程似乎对我不起作用。所以后来我试图通过在单独的 shell 中启动服务器来验证 "SIGHUP" 是否真的可以重新加载 squid 服务器,但它也不起作用。

所以我重新加载鱿鱼服务器有错吗?

在实现中,我使用 kill 命令和 SIGHUP 来重启带有子进程 ID 的服务器(后面是 squid 的 systemd 配置告诉我如何重新加载 squid,https://github.com/squid-cache/squid/blob/master/tools/systemd/squid.service)。

预计:我可以在主进程中随时使用 kill -HUP 重新加载 squid。 实际:重新加载失败,当我发送 SIGHUP 时子进程将退出。

通过查看 cache.log 文件,我发现 squid 只能识别配置文件的完整路径。因此,只需在启动 squid 时键入文件的完整路径,当您向 squid 进程发送 HUP 信号时,它就会以相同的配置成功地重新加载。