[CentOS] command to ensure other command does last longer than5 seconds

Sat Apr 7 07:28:46 UTC 2007
Shawn Everett <shawn at tandac.com>

On Saturday 07 April 2007, Michael Velez wrote:
> > -----Original Message-----
> > From: centos-bounces at centos.org
> > [mailto:centos-bounces at centos.org] On Behalf Of Peter Gross
> > Sent: Saturday, April 07, 2007 12:06 AM
> > To: CentOS mailing list
> > Subject: Re: [CentOS] command to ensure other command does
> > last longer than5 seconds
> >
> > Jerry Geis wrote:
> > > Hi,
> > >
> > > I am wondering if there exists a centos command that runs another
> > > command and ensures the second command doesnt take more than x
> > > seconds? When x is given on the command line.
> > >
> > > If the second command is not "done" the first command will
> >
> > just kill
> >
> > > it and both exit.
> > >
> > > Does such a method or command exist?
> > >
> > > I just need to ensure the second command does just continue
> >
> > to run and
> >
> > > run and run.
> >
> > Here's my admittedly kludgey quick and dirty way of doing this ....
> > write a shell script that does the following:
> >
> > 1. takes two arguments -- the command to run (in quotes) and
> > then the drip dead time (in seconds? or minutes?)
> >
> > 2. start the command in the background, saving its PID in a
> > var (say $pid).
> >
> > 3. create an "at" job to kill the pid at the appointed time, as in:
> >
> > echo kill -TERM $pid | at now + 15 minutes
> >
> > If the job has already finished, the kill -TERM will
> > hopefully be harmless (i.e., the pid's haven't cycled around
> > and there is now a new, but different, job with the same pid).
> > _______________________________________________
>
> I think the best way to do it would be with the sleep command since the
> 'at' command does not allow you to specify seconds.
>
> In a script (which I presume is your first command) start the second
> command in the background, get the pid of that second command, then
> sleep for 5 seconds, and kill it.
>
> Michael
>

Just building off Micheal's idea:

killafter.sh <command> <time>
#!/bin/bash

$1 &
pid=$!
sleep $2
kill -TERM $pid