[olug] Re: [Omaha.pm] Quick Bail
    Jay Hannah 
    jay at jays.net
       
    Fri Sep  2 12:13:57 UTC 2005
    
    
  
On Sep 1, 2005, at 5:22 PM, Kenneth Thompson wrote:
> A short one-liner to keep a script from executing more than one at a 
> time (say a long running script kicked off from cron every minute that 
> runs more than a minute occasionally...
>  
> my @ps = `ps -ef | grep $0 | grep -v grep`; exit if ( @ps > 1);
I like it! Quick and dirty! -grin-
> and a more advanced version...
>  
> my @procs = grep /perl .*invan\.pl/, `ps axw`; 
> if (@procs > 1) { 
>    unless ($ENV{USER} eq "jhannah") {  # Hopefully that dork knows 
> what he's doing, so let him do whatever. 
>       die "Looks like I'm already running. I refuse to run on top of 
> myself.\n @procs";
>    }
> } 
-laugh-  Not sure I'd call my hack there more advanced. But, it is 
handy in that it throws a printed list of the procs that were already 
running, and lets me, specifically, shoot myself in the foot when I 
want to. -grin-
For serious applications I've used Proc::ProcessTable before:
    http://search.cpan.org/~durist/Proc-ProcessTable-0.40/ProcessTable.pm
I assume it's more portable than `ps -ef`, and is great when you care 
about PIDs, PPIDs, memory utilization, etc.
Looks like there's tons of process control stuff on CPAN:
    http://search.cpan.org/search?query=proc&mode=all
Grin,
j
    
    
More information about the OLUG
mailing list