Sponsored Content
Top Forums Shell Programming and Scripting Help with Running More than One Program Post 302388824 by DTriniWay on Thursday 21st of January 2010 03:30:49 PM
Old 01-21-2010
Quote:
You should not use kill -9 (only as a very last resort). It causes zombie processes.
Perhaps the problem lies with the fact that the java process is a subprocess yet again.
OK. Thank you for your thoughts.

Before I try your experiment, I commented out the following lines from your script:
Code:
for agent in "$@"
do
  ./run-any-agent $agent &   # run in background
done

I guess it didn't do anything...

Next, I restarted my machine and ran the "run-all-agents" script like this:
Code:
sh ./run-all-agents MyProgram1 MyProgram2 MyProgram3

Then, I went through all the processes using the following command:
Code:
ps aux | more

And killed the three processes, I'd spawned using the "kill -9" command. They died. However, this process doesn't seem to die (despite repeated attempts to kill it):
Code:
DTW    13986  0.1  1.0 1196768 21528 pts/0   Sl   14:21   0:00 java -server -Xmx1024M -Xms512M -cp ....

Now, I'll try restarting the machine and then try your experiment and report back.

Thanks,

DTW

---------- Post updated at 03:07 PM ---------- Previous update was at 02:56 PM ----------
Quote:
What happens if you combine the two scripts into one and you use something like this:
Code:
#!/bin/bash
#
# Usage
# From the agent directory:
# ./run-all-agents AgentName1 AgentName2 ...
#
trap killsubs INT
killsubs()
{
  echo "CTRL-C was pressed"
  jobs -p|xargs kill
  echo "Jobs were killed"
  exit
}

TAC_AGENT_HOME=`pwd`
LIB=${TAC_AGENT_HOME}/lib
CLASSPATH=.
CLASSPATH=${CLASSPATH}:${TAC_AGENT_HOME}/bin
for i in $( ls ${LIB}/*.jar ); do
  CLASSPATH=${CLASSPATH}:$i
done

for i in "$@"
do
  java -server -Xmx1024M -Xms512M -cp $CLASSPATH edu.umich.eecs.tac.aa.agentware.Main -config "config/$i.conf" &
done
wait

So, I did what you suggested and called the above script, "test-script1". I ran it like this:
Code:
 sh ./test-script1 MyProgram1 MyProgram2 MyProgram3

It started up. Then, when I hit "Ctrl+C" it stopped. Everything stopped nicely. I even did a "ps aux | more" command and looked at the running processes carefully but there was no sign of either of the three programs running. Also, there was no sign of the "java server" running - for the first time. :-) I can test this out and see if the programs are actually functional and report back. Does that sound fair?

DTW

---------- Post updated at 03:30 PM ---------- Previous update was at 03:07 PM ----------

Quote:
I can test this out and see if the programs are actually functional and report back. Does that sound fair?
Hi!
I'm back. I did try to run the programs too and they ran just fine. I tried stopping/starting the programs and they did so every single time. I'm so happy that this is finally working! Thank you very much for all your help, Scrutinizer.

I do have one more question, though. Before I start the programs, I fire up a server using the following script:
Code:
#!/bin/bash
#
# Usage
#   sh ./runServer.sh
#

TACAA_HOME=`pwd`
LIB=${TACAA_HOME}/lib
CLASSPATH=.
for i in $( ls ${LIB}/*.jar ); do
    CLASSPATH=${CLASSPATH}:$i
done


java -cp $CLASSPATH se.sics.tasim.sim.Main

So far, I've been able to "kill" the server by just hitting Ctrl+C. However, this doesn't always work. Is there a way to nicely kill this process too? That way, we'd have a script to nicely start/stop the server and then another one to nicely start/stop the programs.

My next goal (after the server start/stop script is implemented and tested) is to truly understand what we did so that I actually learn some scripting too. :-)

Sincerely,

DTW
 

10 More Discussions You Might Find Interesting

1. Programming

Running a compiled Program

Just getting into the Unix command line programming and am unable to run any program I write. I am using a Makefile and the source is compiling but when I enter the name of the output file I get back: bash: lab01exe.out: command not found I'm sure I am just dooing something simple... (2 Replies)
Discussion started by: Krebsbac
2 Replies

2. Shell Programming and Scripting

Running a program automatically

How can I make a program run automatically at a certain time of day? My problem is I need to make a small backup program that will back up a few files every day? (3 Replies)
Discussion started by: jvadn0
3 Replies

3. Programming

running a c/c++ program in unix

This is not a question, but rather a simple how-to for programmers who are new to the UNIX environment. I too,am new to UNIX. First I developed a few programs on my box and perfected them until they were satisfactory for execution. Problem was however, that once i compiled and all that,... (2 Replies)
Discussion started by: kray
2 Replies

4. UNIX for Dummies Questions & Answers

Running a program

Hi.Iam new to Linux.i got linux 7.0 pro and dont know how to run programs. I want a perl interputer and i know i installed one but how do i run it ??? Also how do i run a C or C++ editor ?and how do i run cron ? (3 Replies)
Discussion started by: perleo
3 Replies

5. UNIX for Dummies Questions & Answers

Running a program on boot!

Hi there! I tried to search for something like this here but couldn't find anything. I need to run a specific program when linux starts up. I need to run it after the rp-pppoe has started because this prog needs internet connection. I start the program by entering ./dynix start (its in my home... (4 Replies)
Discussion started by: D-Lexy
4 Replies

6. Programming

running a program for a specified time

how can i run a program for a specified time? i need to print a current time during program execution. (3 Replies)
Discussion started by: prosputko
3 Replies

7. Programming

running a parallel program

hi , i need to run a parallel program . for example; program1 { array=" the second program should called here : program 2" the execution should continue } the 2nd program should recieve an array of information as argument and it should... (4 Replies)
Discussion started by: bankpro
4 Replies

8. UNIX for Dummies Questions & Answers

Running a program (Dynflow)

Lets get some stuff out of the way before the question. I am currently running FreeBSD 7.0 on a VirtualBox virtual machine. I do not know much about Unix or FreeBSD, though I do run linux at home. My boss gave me some files that he says are a unix version of the program Dynflow. The Programs... (0 Replies)
Discussion started by: poet_will
0 Replies

9. Shell Programming and Scripting

Running a program using csh

I have a program which I can run on the command line like below and works fine /nethome/chrisd/HSeis/TommyCD/TommyCD-1101/bin/raytrac vmod=npt10-z30.vmod srfile=jcdint.sc rcfile=jcdint.rc phases="SP FS" level=twop format="X T" dtau=0.1 mdacc=0.5 mindist=0.1 maxitertp=25 ray=npt10-z30.ry... (0 Replies)
Discussion started by: kristinu
0 Replies

10. Shell Programming and Scripting

Running C program in UNIX

I want to run a C program from my BASH script. Here's some very basic simplified code of my bash script: #!/bin/bash echo "Run C program" ./main.c echo "Ran C program" Here's my main.c: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv) { ... (3 Replies)
Discussion started by: millsy5
3 Replies
All times are GMT -4. The time now is 05:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy