Nitpicking grammar in my own patch...

Here's a slightly better patch, only because man flock(1) clarifies that
one can pass only a single command with direct invocation of flock.
Below the synopsis are three other quotes from the man page. Only the
third form, which is not used by run-one, allows multiple commands to be
run.

SYNOPSIS
       flock [-sxon] [-w timeout] lockfile [-c] command...
       flock [-sxon] [-w timeout] lockdir [-c] command...
       flock [-sxun] [-w timeout] fd

Pass a single command to the shell with -c.
The first and second forms wraps the lock around the executing a command, in a 
manner similar to su(1) or newgrp(1).
The  third form is convenient inside shell scripts, and is usually used
       the following manner:

       (
         flock -n 9 || exit 1
         # ... commands executed under lock ...
       ) 9>/var/lock/mylockfile


$ diff -Nru a/run-one b/run-one 
--- a/run-one   2013-03-04 18:02:15.513983439 -0500
+++ b/run-one   2013-03-05 15:27:46.635948096 -0500
@@ -32,14 +32,15 @@
 mkdir -p "$DIR"
 
 # Calculate the hash of the command and arguments
+CMD="$@"
 CMDHASH=$(echo "$@" | md5sum | awk '{print $1}')
 FLAG="$DIR/$CMDHASH"
 
 # Handle run-this-one invocation, by killing matching process first
 case "$(basename $0)" in
        run-one)
-               # Run the specified commands, assuming we can flock this 
command string's hash
-               flock -xn "$FLAG" "$@"
+               # Run the specified command, assuming we can flock this command 
string's hash
+               flock -xn "$FLAG" -c "$CMD"
        ;;
        run-this-one)
                ps="$@"
@@ -58,15 +59,15 @@
                pid=$(lsof "$FLAG" | awk '{print $2}' | grep "^[0-9]") || true
                [ -z "$pid" ] || kill $pid
                sleep 0.1
-               # Run the specified commands, assuming we can flock this 
command string's hash
-               flock -xn "$FLAG" "$@"
+               # Run the specified command, assuming we can flock this command 
string's hash
+               flock -xn "$FLAG" -c "$CMD"
        ;;
        keep-one-running)
                backoff=1
                while true; do
-                       # Run the specified commands, assuming we can flock 
this command string's hash
+                       # Run the specified command, assuming we can flock this 
command string's hash
                        set +e
-                       flock -xn "$FLAG" "$@"
+                       flock -xn "$FLAG" -c "$CMD"
                        if [ "$?" = 0 ]; then
                                # Last run finished successfully, reset to 
minimum back-off of 1 second
                                backoff=1

** Patch added: "run-one.patch"
   
https://bugs.launchpad.net/run-one/+bug/1145461/+attachment/3559045/+files/run-one.patch

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1145461

Title:
  add "-c" to flock call so variables get passed to command executed by
  run-one

To manage notifications about this bug go to:
https://bugs.launchpad.net/run-one/+bug/1145461/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to