← Back to team overview

sslug-teknik team mailing list archive

Re: number of me - script problem

 

Martin Møller Skarbiniks Pedersen skrev:
2010/4/14 Erling A. Jacobsen <linuxcub@xxxxxxxx>:
On Wed, 2010-04-14 at 14:15 +0200, Martin Møller Skarbiniks Pedersen
wrote:
Hejsa,
  På solaris og AIX bruger jeg flg. lille kode-stump:

#!/bin/bash

NUM_OF_ME=$(ps -ef | grep num_of_me.sh |wc -l )
echo $NUM_OF_ME

if [[ $NUM_OF_ME -gt 1 ]] ; then echo already running ; exit ; fi

[...]


Men under linux er NUM_OF_ME lig 3, selvom der ikke kører andre kopier
af scriptet.
Hvad sker der lige og hvad kan det bedst løses, så det virker ens på
alle unix-platforme ?
Det har formentlig ikke så meget at gøre med linux kontra ikke-linux,
men mere med at du også tæller grep processen med.

Jeg plejer altid at tilføje en "| grep -v grep" efter den første grep,
så passer pengene. Det kan sikkert også gøres mere sofistikeret.

Erling


Problemet er nok at $( ... ) giver en ekstra num_of_me.sh process på
linux men ikke AIX.

!/bin/bash

NUM_OF_ME=$({ps -ef | grep num_of_me.sh | grep -v grep | wc -l)
echo $NUM_OF_ME

if [[ $NUM_OF_ME -gt 1 ]] ; then echo already running ; exit ; fi


Prøv med :

NUM_OF_ME=`ps -ef | grep [n]um_of_me.sh | wc -l`
echo $NUM_OF_ME


if [[ $NUM_OF_ME -gt 1 ]] ; then echo already running ; exit ; fi



Med venlig hilsen

Martin Ahrentsen
Rødkælkevej 53, Hadbjerg
8370 Hadsten
25241017



Follow ups

References