0
#!/bin/bash
( 
  flock -n 200 || exit 1
  # commands executed under lock 
  sleep 3
  echo "TEST"
) 200 > /home/nis/Scripts/lock.txt

Running this scrip gets me this error:

lock.sh: 7: lock.sh: Syntax error: word unexpected

I don't get why this happens. It works on my QNAP (Busybox)

1
  • xhienne's answer addresses your main problem, but looking at this I wonder if it's doing what you want. If all you want is to ensure the process only runs one at a time, that will work, but it would be almost useless for anything else. Jan 14, 2017 at 18:31

1 Answer 1

1

Suppress the space after 200:

...
) 200> /home/nis/Scripts/lock.txt

What 200> does is to redirect file descriptor 200 to the given file. You then use that file descriptor with flock to lock the file.

7
  • thanks.but no change - samme error also tried Sudo. Same error. :/
    – Nis
    Jan 15, 2017 at 7:44
  • @Nis Start over with a brand new file: copy-paste your script except the last line, then copy-paste the last line from my answer. It should work (works for me)
    – xhienne
    Jan 15, 2017 at 9:45
  • I was so hoping for this to work. I wrote the whole thing in a new file. However, I wrote the script on a mac (EditRocket) and saved on samba network drive, then changed permissions (777 just to be sure) but..let me try to do it from scratch locally..
    – Nis
    Jan 15, 2017 at 21:08
  • No. Same thing. Really frustrating. Could i have installed the "wrong" flock? its: flock -V : flock from util-linux 2.27.1
    – Nis
    Jan 15, 2017 at 21:21
  • ok, this adds to my confusion. If I run this as "bash 'scriptname.sh" then there are no troubles.. anyne can explain this? (and whats the difference between sh and bash calling the script?) Thanks
    – Nis
    Jan 16, 2017 at 6:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .