I made yesterday some tests on a Java server running on a linux machine. So I had to run the Java server and a policy server in background, then I had to stop them to change some things and then I then I started them again several times ( I will explain in my next article why I needed a policy server ) . Of course, after I repeated this operation many times, I got bored and I decided to simplify my work by creating a shell script and after some googling I found a way to run multiple background processes from a shell script.
#!/bin/bash if [ $# -ne 1 ]; then echo "Please select a command." else case "$1" in start) echo "Starting chat servers..." { java -jar policyserver.jar 843 >/dev/null 2>&1 </dev/null & } & for (( i = 7500 ; i <= 7515; i++ )) do echo "Starting server on port $i" { java -jar server.jar $i >/dev/null 2>&1 </dev/null & } & done ;; killall) kill -9 `ps -A | grep "java" | awk '{print $1}'` ;; *) echo "$1 command is not available" ;; esac fi |
Note. Don’t let many processes to hang in background because at some time your linux server will refuse to create more threads. Because you put the processes in background using this command { java -jar server.jar $i >/dev/null 2>&1 </dev/null & } & your console isn’t the parent process anymore, so if you close your console the processes will continue to run.