mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
dd72bd1490
pkill -f matches the whole command line and "^" only anchors the start, so "^/usr/local/bin/pulse-agent" also matches "/usr/local/bin/pulse-agent-prod". On a host running a second agent whose binary name shares the prefix, every install, every upgrade, and every restart of the generated Unraid wrapper silently killed the other agent too. Confirmed on a live dual-agent Unraid box: the old pattern matched both the dev agent and the production dogfood agent, the bounded pattern matches only its own. The wrapper is the worst of the three because restarting through it is the documented runbook step, so the collateral kill repeats every time an operator follows it. Bound the far end of each binary-anchored pattern with ([[:space:]]|$), and swap the bare pkill -9 -f "pulse-agent" for -x on the exact process name, which keeps that site's deliberate path-agnostic intent while excluding the sibling. The pkill -x sites were already safe and are unchanged. Guarded by two tests: one pins that no binary-anchored pkill in the installer is left unbounded, the other exercises POSIX ERE semantics against the two command lines a dual-agent host presents, including a premise check that the unbounded pattern really does match the sibling so the assertion cannot pass vacuously.