Re: Java Runtime class; exec method Thanks!
Re: Java Runtime class; exec method Thanks!
- Subject: Re: Java Runtime class; exec method Thanks!
- From: Jonathan Rochkind <email@hidden>
- Date: Thu, 12 Feb 2004 12:42:06 -0600
You may already know this, but dealing with Runtime.exec can be
somewhat tricky. For reasons you have not mentioned yet. I highly
reccomend this article:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
For explaining some of the trickiness and how to deal with it. That
article was invaluable to me in getting my own Runtime.execs to work;
I never would have figured out what was causing the mysterious
(deadlock) problems without it.
--Jonathan
At 3:01 PM -0500 2/11/04, Melissa Kimball wrote:
Thank you so much everyone for all your help!!
(Generally, running a simple test program is a much better idea than
running the final thing you really want to run: there are far fewer things
going on which might screw things up.)
For example, there is a 'printenv' command which does nothing but print all
the environment variables it has.
I did get this simple.sh shell script to work. It would print the
environment variables to a file (WO - monitor makes it difficult to see
stdout). It would set a new environment variable, say NEW=/some/location,
using exec(), but I couldn9t get it to append the bin9 path to the existing
path. The reason why I chose to add an a new environment variable and
modify the PATH environment variable is because these are the required
variables needed when submitting jobs to our Sun Grid Engine. I acquired
this information by opening a shell script that executes each time I log
into one of our Xserve nodes.
I can9t find any examples any where, and I9ve tried
different combinations to try to get it to work, and I can9t! I9m
especially having a hard time with how to set the
PATH=$PATH:/my/new/bin?????
The PATH variable is going to be useless. exec() doesn't use the PATH
variable
to find executables -- you have to find them yourself. And even if you did
exec() >a shell, it would undoubtedly instantiate it's own PATH variable,
ignoring whatever you set up.
THIS IS VERY GOOD TO KNOW! Scrap trying to set the PATH to find SGE
executables! Is it possible to do something like this:
rt.exec(3/usr/local/sge/bin/darwin/qsub someScript.sh2, sge_env_var);
Of course I would put the command in a String[] to avoid the tokenizer. I9m
thinking that there might be permission problems with trying to access
/usr/local/sge since the request is coming from the web.
I think you're forgetting that "$PATH" is a *shell* feature, not a Java
feature. You're going to have to retrieve the value of the PATH
environment variable as provided to your process, concatenate whatever you
want added, then use the result to create a "PATH=..." string to pass on
to the other program.
There's no easy way to retrieve the PATH env-var.
If such things are required, it might be simpler to use Runtime.exec() to
execute a shell program, then feed it the command-lines you want executed.
There are a couple ways of doing this, but the conceptually simplest is to
pump the command-line text to the Process's output-stream. Since the
subprocess would be a shell, you can then use shell expressions in the
command-list.
I think it would make more sense to write a wrapper shell script that does
whatever setup (PATH, HOME, ...) you need and just exec() the script. Any
variables
could be passed as parameters, which the script could either parse or pass
on to whatever tool you're trying to call.
#! /bin/bash
JAVAHOME=/Library/Java/Home
PATH=${PATH}:/opt/bin/mycommands
myspecialtool $1 $2 ...
I think I am going to try this approach (I9ll have so many arguments to pass
- but that is ok)! I9ll have to put this wrapper script in a location where
it can be executed through the web by exec().
Oh - I had to subscribe to the list in order to post a question.
Thanks again!!!!
--
Melissa Kimball
UNC-Chapel Hill
Giddings Lab
919.843.3389
email@hidden
_______________________________________________
webobjects-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/webobjects-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
webobjects-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/webobjects-dev
Do not post admin requests to the list. They will be ignored.