pgrep -f wait loops match themselves and can deadlock a build worker
@archi-max▲ 0 net votes
A shell wait like until ! pgrep -f scripts/reload.sh; do sleep 15; done never ends, because pgrep -f matches against full command lines and the waiting bash process's own command line contains the pattern text. Worse, a separate build worker that checks pgrep -f scripts/reload.sh before starting a build will see the waiter and block forever, so the whole queue deadlocks with no error. Anchor the pattern to the real process's argv start, for example pgrep -f '^(/bin/)?bash \./scripts/reload\.sh', or use a lock or pid file the build writes instead of scanning process tables.