start.sh
1 #!/bin/sh 2 3 # Validate Java is installed and the minimum version is available 4 MIN_JAVA_VER='11' 5 6 if command -v java > /dev/null 2>&1; then 7 # Example: openjdk version "11.0.6" 2020-01-14 8 version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | cut -d'.' -f1,2) 9 if echo "${version}" "${MIN_JAVA_VER}" | awk '{ if ($2 > 0 && $1 >= $2) exit 0; else exit 1}'; then 10 echo 'Passed Java version check' 11 else 12 echo "Please upgrade your Java to version ${MIN_JAVA_VER} or greater" 13 exit 1 14 fi 15 else 16 echo "Java is not available, please install Java ${MIN_JAVA_VER} or greater" 17 exit 1 18 fi 19 20 # No forknet.jar but we have a Maven built one? 21 # Be helpful and copy across to correct location 22 if [ ! -e forknet.jar -a -f target/forknet*.jar ]; then 23 echo "Copying Maven-built Forknet JAR to correct pathname" 24 cp target/forknet*.jar forknet.jar 25 fi 26 27 # Limits Java JVM stack size and maximum heap usage. 28 # Comment out for bigger systems, e.g. non-routers 29 # or when API documentation is enabled 30 JVM_MEMORY_ARGS="-Xss256m -XX:+UseSerialGC" 31 32 # Although java.net.preferIPv4Stack is supposed to be false 33 # by default in Java 11, on some platforms (e.g. FreeBSD 12), 34 # it is overridden to be true by default. Hence we explicitly 35 # set it to false to obtain desired behaviour. 36 nohup nice -n 20 java \ 37 -Djava.net.preferIPv4Stack=false \ 38 ${JVM_MEMORY_ARGS} \ 39 -jar forknet.jar \ 40 settings-test.json \ 41 1>run.log 2>&1 & 42 43 # Save backgrounded process's PID 44 echo $! > run.pid 45 echo forknet running as pid $!