Re: singleton for script with shebang

2015-01-02 Thread Bradley Asztalos
Ole,

No, I did not say anything about Shlomi being right, just that you are
clever, in the good sense. To me it is great to be able to use shebang, and
it is not overly clever at all, in the bad sense.  I often use the
/usr/bin/timeout command and parallel + a command + arguments in crontab
entries and other shell scripts and that gets unwieldy, so it is rather
nice to be able to use shebang to encapsulate at least the parallel part of
the command line.

Cheers,

Bradley

On Fri, Jan 2, 2015 at 1:55 AM, Ole Tange o...@tange.dk wrote:

 On Fri, Jan 2, 2015 at 8:14 AM, Shlomi Fish shlo...@shlomifish.org
 wrote:
  On Thu, 1 Jan 2015 13:54:57 -0800
  Bradley Asztalos b...@customweather.com wrote:
 :
  [... shebang ...]
 
  parallel is written in Perl 5 and uses «#!/usr/bin/perl» or whatever as a
  shebang. As a result it cannot be itself used as a she-bang processor.

 So why is Shlomi right, when it is clearly possible to use GNU
 Parallel as shebang program?

 It is because on some UNIX systems this is actually true. On FreeBSD
 you need to do:

   #!/usr/bin/env -S parallel --shebang-wrap ...

 On other UNIXes there is no work around.

  Furthermore, I should note that in programming, it is a good idea to
 stick to
  the https://en.wikipedia.org/wiki/KISS_principle and not try to be as
 clever as
  possible.

 Sometimes the code is simpler if GNU Parallel is put in the shebang
 line. But it does carry some limitations. The length of the shebang
 line is quite limited on many systems, and often the systems will
 simply chop it off without any warning.

 See http://www.in-ulm.de/~mascheck/various/shebang/#length


 /Ole




Re: singleton for script with shebang

2015-01-02 Thread Bradley
Thanks for the reply,  see ole's clever response



 On Jan 1, 27 Heisei, at 11:14 PM, Shlomi Fish shlo...@shlomifish.org wrote:
 
 Hi Bradley,
 
 On Thu, 1 Jan 2015 13:54:57 -0800
 Bradley Asztalos b...@customweather.com wrote:
 
 I have a simple script, foo.sh::
 
 #!/bin/bash
 echo start $$
 sleep 10
 echo end $$
 
 I can run make sure this runs as a singleton with
 
 sem --fg -u --id lock_id ./foo.sh
 
 But I'm wondering if it is possible to use shebang in this context as in:
 
 ---singleton.sh-
 
 #!/opt/local/bin/parallel --shebang-wrap /bin/bash --semaphore --fg -u --id
 lock_id
 echo start $$
 sleep 10
 echo end $$
 
 -
 
 parallel is written in Perl 5 and uses «#!/usr/bin/perl» or whatever as a
 shebang. As a result it cannot be itself used as a she-bang processor.
 Furthermore, I should note that in programming, it is a good idea to stick to
 the https://en.wikipedia.org/wiki/KISS_principle and not try to be as clever 
 as
 possible.
 
 Hope it helps.
 
 Regards,
 
Shlomi Fish
 
 This does not work. Any ideas here?
 
 Bradley
 
 
 
 -- 
 -
 Shlomi Fish   http://www.shlomifish.org/
 The Human Hacking Field Guide - http://shlom.in/hhfg
 
 A kid always wishes they were older until they are 18. Afterwards, they always
 wish they were younger.
 
 Please reply to list if it's a mailing list post - http://shlom.in/reply .
 



Re: singleton for script with shebang

2015-01-02 Thread Bradley
Agreed Doh!



 On Jan 2, 27 Heisei, at 12:48 AM, Ole Tange o...@tange.dk wrote:
 
 On Thu, Jan 1, 2015 at 10:54 PM, Bradley Asztalos
 b...@customweather.com wrote:
 
 But I'm wondering if it is possible to use shebang in this context as in:
 
 It is.
 
 ---singleton.sh-
 
 #!/opt/local/bin/parallel --shebang-wrap /bin/bash --semaphore --fg -u --id
 lock_id
 echo start $$
 sleep 10
 echo end $$
 
 -
 
 This does not work. Any ideas here?
 
 You are going to say 'Doh'.
 
 /bin/bash is not an argument for --shebang-wrap. It is the command you
 want to be run. Also --semaphore --fg -u --id are not options for
 bash. Swap them around and you are good:
 
 #!/opt/local/bin/parallel --shebang-wrap --semaphore --fg -u --id
 lock_id /bin/bash
 
 (Here is where you say 'Doh').
 
 
 /Ole



Re: singleton for script with shebang

2015-01-02 Thread Ole Tange
On Thu, Jan 1, 2015 at 10:54 PM, Bradley Asztalos
b...@customweather.com wrote:

 But I'm wondering if it is possible to use shebang in this context as in:

It is.

 ---singleton.sh-

 #!/opt/local/bin/parallel --shebang-wrap /bin/bash --semaphore --fg -u --id
 lock_id
 echo start $$
 sleep 10
 echo end $$

 -

 This does not work. Any ideas here?

You are going to say 'Doh'.

/bin/bash is not an argument for --shebang-wrap. It is the command you
want to be run. Also --semaphore --fg -u --id are not options for
bash. Swap them around and you are good:

#!/opt/local/bin/parallel --shebang-wrap --semaphore --fg -u --id
lock_id /bin/bash

(Here is where you say 'Doh').


/Ole



Re: singleton for script with shebang

2015-01-02 Thread Bradley Asztalos
Ole,

No problem, I realized that it was rhetorical after I wrote the response.
Cheers Shlomi and Ole and thank you for the help.

Cheers,

Bradley

On Fri, Jan 2, 2015 at 2:15 AM, Ole Tange o...@tange.dk wrote:

 On Fri, Jan 2, 2015 at 11:07 AM, Bradley Asztalos
 b...@customweather.com wrote:

  No, I did not say anything about Shlomi being right,

 That was me asking a rhetorical question. I should stop doing that, as
 that is easy to misunderstand in writing.

 I should instead have written: Slomi is right in certain circumstances.


 /Ole