Файл PID исчезает. Проверьте, как systemd запускает Squid.
Согласуйте поведение Squid на переднем плане или в режиме демона с его systemd-юнитом, прежде чем считать исчезающий файл PID проблемой прав.
Если файл PID Squid появляется и сразу исчезает, сравните Type= загруженного юнита с фактическим исполняемым файлом и его аргументами. Служба Type=simple ожидает, что запущенный процесс останется основным процессом. Команда, которая уходит в режим демона и позволяет этому процессу завершиться, следует другому договору; systemd может счесть её завершённой и снять остальные процессы службы.
| Параметр | Владелец и назначение |
|---|---|
pid_filename | Squid записывает свой PID по этому пути в версиях, где есть эта директива |
PIDFile= | systemd читает PID из этого пути там, где эта модель службы в нём нуждается |
PIDFile= не создаёт файл и не превращает команду с уходом в демона в процесс переднего плана. В схеме с fork тип службы, поведение демона и путь должны совпадать. В схеме переднего плана менеджер должен отслеживать предполагаемый постоянный процесс.
Squid различает -N, то есть отказ от режима демона, и --foreground, то есть удержание родителя до завершения дочерних процессов. Выбирайте по сборке и организации службы. Упакованный юнит может вместо этого использовать уведомление о готовности или другие параметры, зависящие от сборки; сохраняйте эту модель при настройке.
Теперь сравните журнал с сообщениями запуска Squid. Синтаксическая ошибка, недоступный рабочий каталог или фатальная инициализация действительно могут остановить службу и удалить её файл PID. Само исчезновение не отличает такой выход от неверного отслеживания процесса. Устраните причину, которую подтверждают эти сообщения, вместо того чтобы раз за разом менять владельца каталога.