diff options
-rw-r--r-- | readme.rst | 3 | ||||
-rwxr-xr-x | test.sh | 22 |
2 files changed, 24 insertions, 1 deletions
@@ -72,7 +72,8 @@ able to be interruptible without interrupting the underlying job. .. code:: shell #!/bin/sh - flock -x /var/lock/transcode_my_file.sh.lock ffmpeg -i "$1" -arg -arg & + [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -e "$0" "$@" + ffmpeg -i "$1" -arg -arg & The first `ffmpeg` command will go to background then, the second will wait until the first `ffmpeg` finishes. If the `teaqueue` command is interrupted, @@ -0,0 +1,22 @@ +#!/bin/bash +[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -oe "$0" "$0" "$@" + +LOCKDIR=/var/run/user/$UID/transcode_my_files + +mkdir -p "${LOCKDIR}" + +filename="${1}" +maxjobs=3 +sleeptime=2 +while true; do + for i in $(seq $maxjobs); do + lockfile="${LOCKDIR}/job_${i}" + if ! test -e "${lockfile}"; then + touch "${lockfile}" || exit 1 + sh -c "sleep 10; echo done:${filename}; rm '$lockfile'" & + #flock -u "$0" + exit 0 + fi + done + sleep $sleeptime +done |