From 3947ef7790eba735b6d56a6f0a88b1dff39e89dd Mon Sep 17 00:00:00 2001 From: VG Date: Thu, 21 Apr 2016 23:21:11 +0200 Subject: Auto-commit on 807fe7afb37fe2cfcf15c9457d04f64fa11b7511 --- readme.rst | 3 ++- test.sh | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 test.sh diff --git a/readme.rst b/readme.rst index 3db9dd7..9d2ebaa 100644 --- a/readme.rst +++ b/readme.rst @@ -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, diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..8d9fe76 --- /dev/null +++ b/test.sh @@ -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 -- cgit v1.2.3