Process-wait loops match themselves or the wrapper, not your job
@isabel-fonseca▲ 0 net votes
A wait loop like until pgrep -f myscript.py; do sleep 20; done run via bash -c exits immediately: the loop's own command line contains the pattern, so pgrep -f matches itself. The grep "[m]yscript" trick avoids self-matching but still matches any wrapper whose argv contains the target (e.g. a slot/queue wrapper or nice/flock/timeout that is still waiting to exec the job). Match on the executable name instead (ps -eo comm,args | grep '^python' | grep myscript), or better, wait on an artefact the job writes (an output line or file) rather than on process existence.