Re: Running a shell command for a specific period of time

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Bill Warner
Date:  
To: Main PLUG discussion list
Subject: Re: Running a shell command for a specific period of time
Yea, I'd say you're pretty limited to:

------------------------------------
dosomething &
pid=$!
sleep $x
kill $pid
------------------------------------

You could put a small amount of logic to check it every once in a while
as well.

Maybe
------------------------------------
dosomething &
pid=$!

while [ $miutes < $timeout ]; do
    sleep 60
    let minutes=minutes+1
    stillrunning=`ps -ef |grep $pid` # wont work if new proc is started and
gets same pid
    if [ ! -z $still ]; then
        break;
    fi
done
-------------------------------------


*disclaimer i didn't test or even try to run any of this.



On Wed, 2005-10-26 at 12:51 -0700, Erik Bixby wrote:
> So, I'm guessing there's no elegant way of doing what I want,
> something similar to "time" that calls a command and acts upon it,
> somehow...
> -Erik
>
> On 10/26/05,  <> wrote:
>         Erik wrote:
>         > I was wondering if anyone knew a way to allow a shell
>         > command to run for a specific period of time.  In this
>         > particular case, I want tcpdump to run for 23 hours,
>         > 59 minutes, 59 seconds. 

>
>         It would be best if the process could limit itself, since
>         anything you do in a shell script will have sloppy timing,
>         maybe a few seconds off.  But you can do this for any process,
>         using the following crude approach within a single script:

>
>         This script should be run with all its output redirected to a
>         log file, so you can have a record of how it went.

>
>         Run your process (tcpdump) in the background with & 

>
>         This becomes an independent process, so the next command in
>         your script will start immediately:

>
>         date  # output goes into your log file.

>
>         sleep 86399  # Or less, since kill won't be instantaneous

>
>         date

>
>         Use a pipeline with "ps -ef" and "grep" to identify the
>         running tcpdump process.  Extract the pid using "cut" and do a
>         "kill".

>
>         sleep 2   # just to give kill time to take effect

>
>         ps -ef | grep ... # Did it go away?

>
>         date

>
>         exit

>
>         Details on request, but the above commands are good things to
>         learn.  This type of ps + grep pipeline is also useful to
>         detect if a duplicate copy of a script is running, etc.

>
>         The sleep command is only precise to within a second or two,
>         and other system activity might delay the next command.

>
>         Vic

>
>
>         --------------------------------------------------- 
>         PLUG-discuss mailing list -
>         
>         To subscribe, unsubscribe, or to change  you mail settings:
>         http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss

>
> ---------------------------------------------------
> PLUG-discuss mailing list -
> To subscribe, unsubscribe, or to change you mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss

--
Bill Warner <>

---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss