PID 文件消失。先查 systemd 是怎么启动 Squid 的
在把消失的 PID 文件当成权限问题之前,先让 Squid 的前台或守护进程行为与它的 systemd 单元对齐。
如果 Squid 的 PID 文件刚出现就立刻消失,请先对比已加载单元的 Type= 与实际的程序路径和参数。Type=simple 类型的服务要求它启动的那个进程始终是主进程。如果某条命令自己转入守护进程模式、让最初那个进程退出,那属于另一种约定;systemd 可能认为服务已经结束,并把剩下的服务进程一并清掉。
| 设置项 | 归属与用途 |
|---|---|
pid_filename | 在提供该指令的版本中,Squid 把 PID 写到这个路径 |
PIDFile= | 服务模型需要时,systemd 从这个路径读取 PID |
PIDFile= 既不会创建该文件,也不会把守护进程式的命令变成前台进程。在 fork 型布局里,服务类型、守护进程行为和路径必须三者一致。在前台型布局里,管理器必须跟踪那个本应常驻的进程。
Squid 区分 -N(不进守护进程)与 --foreground(保留父进程直到子进程结束)。要按构建方式和服务安排来选。打包好的单元也可能改用就绪通知或该构建特有的其他选项;定制时请保留原有的模型。
接下来把日志与 Squid 的启动消息对照。语法错误、无法访问的运行时目录或致命的初始化确实会让服务退出并删掉 PID 文件。仅凭文件消失,无法把它与进程跟踪错误区分开。请按日志能支撑的原因去修,而不是反复修改目录属主。