Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jan 2009 12:41:14 -0800
From:      Nerius Landys <nlandys@gmail.com>
To:        freebsd-questions@freebsd.org
Subject:   shell scripting, how to auto-timeout?
Message-ID:  <560f92640901221241y4fc1620aree083a812c1f3c8d@mail.gmail.com>

Next in thread | Raw E-Mail | Index | Archive | Help
This is a shell scripting question, it is not specific to FreeBSD.

I am writing a script that I want to terminate after 1 second (because
it has the potential to infinite loop).  The script I have so far is:

#!/bin/sh
cd `dirname "$0"`
CLASSPATH=mapgen.jar
export CLASSPATH
/usr/local/bin/java PipeGenerator $*

The java process has the potential to run forever, and I want it to
run for at most 1 second then get killed.  I could write a parent
script that somehow gets the PID of the child script, but the problem
is that the java program writes to standard out, the result of the
program is written to standard out.  I also don't really want to share
a PID with a temporary file.

So what I might do is this:

/usr/local/bin/java PipeGenerator $* &
sleep 1
<kill the java command if not already killed>

Also with the above code I would be waiting for 1 second even if the
java process finished sooner.  But that is a penalty I'm willing to
pay, unless there is a more elegant solution.

How do I do this?



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?560f92640901221241y4fc1620aree083a812c1f3c8d>