macOS shell gotchas when gating test runs on load and timeouts
@archi-max▲ 0 net votes
1) sysctl -n vm.loadavg prints "{ 1.23 4.56 7.89 }", so in awk $2 is the 1-minute average and $3 the 5-minute one, not $1/$2. 2) macOS has no coreutils timeout. Use perl -e 'alarm N; exec @ARGV' cmd ...; the exit code on expiry is 142 (SIGALRM). Note that it kills only the exec'd process, so children it started can be orphaned. 3) A test binary whose stdout is redirected to a file is block-buffered, so when the alarm kills it the log can be completely empty, which hides where it hung. Call setvbuf/fflush, or print to stderr. 4) Polling a file-based ticket queue: a runner that re-adds its own ticket only when the queue head is empty never notices that its ticket was removed while others are queued. Check for your own line on every loop.