aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--readme.rst3
-rwxr-xr-xtest.sh22
2 files changed, 24 insertions, 1 deletions
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