Re: singleton for script with shebang

2015-01-04 Thread Ole Tange
On Sat, Jan 3, 2015 at 10:09 PM, Bradley b...@customweather.com wrote:
 On Jan 3, 27 Heisei, at 11:21 AM, Ole Tange o...@tange.dk wrote:
 On Fri, Jan 2, 2015 at 8:53 PM, Bradley Asztalos b...@customweather.com 
 wrote:
 On Fri, Jan 2, 2015 at 7:35 AM, Ole Tange o...@tange.dk wrote:
 On Fri, Jan 2, 2015 at 10:51 AM, Bradley Asztalos
 b...@customweather.com wrote:
:
 Does --semaphoretimeout 0 mean never give up?

 Yes: Just as if the option had not been given.

 If so then -0 could mean give up immediately.

 -0 = 0, so no.

 It is implemented in the git version.
:
 So did you provide for a way to give up immediately if sem cannot be acquired 
 immediately?

As mentioned, no.

If you feel that is very important, please provide a situation where
waiting 1 sec for the semaphore before giving up is much worse than
waiting 0.2 sec (which is more or less the time it takes to run sem).
I could not find a situation in which that extra second made a huge
difference. On the contrary I can easily find situations where giving
up immediately is less useful than trying for just a second.

/Ole



Re: singleton for script with shebang

2015-01-04 Thread Bradley Asztalos
Ole,

RobberA is robbing a bank and posts her accomplice, RobberB, outside the
door to keep watch. Independently, RobberC arrives on the scene to rob the
bank as well, noticing that the bank is being robbed, she takes off and
vows to give up her life of crime.

Compare: RobberAB finish their hard days work and leave, when RobberC
arrives, .2s later, to Rob a bank that has no money, three dead clerks, a
screaming child and cops on their way. RobberC gets hanged for murder.

Compare: RobberAB finish their hard days work and leave, when RobberC
arrives, 1s later, and notices the bank security guard coming out the door
in pursuit of RobberAB. RobberC robs a different bank.

The case I was differentiating was between 0  !0 where actionable
information is held by the mutex or semaphore itself, and no other
variables are required. Obviously in the difference between .2 and 1 is not
contained within the semaphore but in some other time variable.

With that said, I have no intention of robbing a bank, at least in the
foreseeable future, and the question from my side at least was pure
pedantry. I withdraw the question ;)

Thanks again for your great work, and--just as importantly--careful
oversight of this forum.

Bradley

On Sun, Jan 4, 2015 at 6:26 AM, Ole Tange o...@tange.dk wrote:

 On Sat, Jan 3, 2015 at 10:09 PM, Bradley b...@customweather.com wrote:
  On Jan 3, 27 Heisei, at 11:21 AM, Ole Tange o...@tange.dk wrote:
  On Fri, Jan 2, 2015 at 8:53 PM, Bradley Asztalos 
 b...@customweather.com wrote:
  On Fri, Jan 2, 2015 at 7:35 AM, Ole Tange o...@tange.dk wrote:
  On Fri, Jan 2, 2015 at 10:51 AM, Bradley Asztalos
  b...@customweather.com wrote:
 :
  Does --semaphoretimeout 0 mean never give up?
 
  Yes: Just as if the option had not been given.
 
  If so then -0 could mean give up immediately.
 
  -0 = 0, so no.
 
  It is implemented in the git version.
 :
  So did you provide for a way to give up immediately if sem cannot be
 acquired immediately?

 As mentioned, no.

 If you feel that is very important, please provide a situation where
 waiting 1 sec for the semaphore before giving up is much worse than
 waiting 0.2 sec (which is more or less the time it takes to run sem).
 I could not find a situation in which that extra second made a huge
 difference. On the contrary I can easily find situations where giving
 up immediately is less useful than trying for just a second.

 /Ole



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



Re: singleton for script with shebang

2015-01-01 Thread Shlomi Fish
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 .



singleton for script with shebang

2015-01-01 Thread Bradley Asztalos
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 $$

-

This does not work. Any ideas here?

Bradley