BladeSystem Forums Have Moved here
To make BladeSystem information easier to find, we have moved the BladeSystem forums here, to Servers and Operating Systems.
Languages and Scripting
Showing results for 
Search instead for 
Do you mean 

why could not find process?

SOLVED
Go to Solution
Occasional Visitor

why could not find process?

Hi , export,

My platform is hp 11i.
I user timer.sh to start a program timer 热repeatly. the content of timer.sh is:

while(true)
do
if [ "`ps -ef|grep './timer '|grep -v grep`" = "" ]
then
./timer IBSS2 WSNADRR=//132.97.9.71:2888 >/dev/null 2>&1
sleep 32
else
sleep 32
fi
done

I start timer.sh in this way:
ksh
timer.sh &
exit
but when I use ps -fe|grep timer.sh ,
I find nothing ,I think the timer.sh should stay alive all the time. in fact the timer exec repeatly.
can anyone tell me why ?
thx a lot


4 REPLIES
Highlighted
Honored Contributor

Re: why could not find process?

Does your program (timer) start manually? Also, you check check if a processes is running or not by sending signal 0 to it.

Also, whay all that grep? If you know process name (exact process name), then you can do as follows.

proc_pid=$(UNIX95= ps -C "timer" -o pid|grep -v 'PID)

kill -o ${proc_pid} || "start_your_program"
There is no substitute to HARDWORK
Honored Contributor

Re: why could not find process?

Does timer.sh invoke a new shell (ie. #!/bin/ksh)?

If not, it will just execute the contents of the script and not show the script name in a process list. If you do a ps -fe | grep sleep I bet you'll see your sleep 32 processes there.

$cat timer.sh
while(true)
do
sleep 5
done
$./timer.sh &
[1] 13012
$ps -ef | grep timer
fifejj 13016 12414 0 11:23:59 pts/ta 0:00 grep timer
$ps -ef | grep 13012
fifejj 13012 12414 1 11:23:55 pts/ta 0:00 -ksh
fifejj 13018 13012 1 11:24:00 pts/ta 0:00 sleep 5

and now invoking a new shell:

$cat timer.sh
#!/bin/ksh

while(true)
do
sleep 5
done
$./timer.sh &
[1] 13028
$ps -ef | grep timer
fifejj 13032 12414 1 11:24:28 pts/ta 0:00 grep timer
fifejj 13028 12414 3 11:24:26 pts/ta 0:00 /bin/ksh ./timer.sh



Decay is inherent in all compounded things. Strive on with diligence
Occasional Visitor

Re: why could not find process?

Jonathan, you are right , I can grep sleep 32. I just don't understand why can not grep
timer.sh
what is the diference betwen ksh and #!/bin/ksh?
if I use #!/bin/ksh , it seem that I can grep ./timer.sh ?

we have servral programs , all exex like
this :
ksh
program1 $
exit
ksh
program2 $
exit
I donot know why they exec like this.
can I exec them like this? :
#!/bin/ksh
program1 $
program2 $
exit
thanks a lot





Honored Contributor

Re: why could not find process?

Putting #!/bin/ksh at the beginning of the script will just invoke a new shell. Otherwise, the commands will run in the current shell.

It should be fine to run them in an executable script as

#!/bin/ksh
program1
program2
exit

Jon
Decay is inherent in all compounded things. Strive on with diligence