#!/bin/zsh D=${1:-~/service} [[ -d $D ]] || { echo 'invalid service directory:' $D; exit 1 } DSEC_WAIT=10 if [[ -o xtrace ]]; then usv.check() { zsh -x ${commands[usv.check]} "$@" } fi touch $D/lock ( flock -w 5 3 if ! usv.check $D; then ( flock -u 3 setsid usv.run $D 2>&1 | logger -t svdir.${${D:t}##.} &>/dev/null ) 3&2 "failed to spawn runsvdir in: $D" exit 1 fi done fi ) 3<$D/lock