/ start.sh
start.sh
1 #!/bin/sh 2 3 # There's no need to run as root, so don't allow it, for security reasons 4 if [ "$USER" = "root" ]; then 5 echo "Please su to non-root user before running" 6 exit 7 fi 8 9 # Validate Java is installed and the minimum version is available 10 MIN_JAVA_VER='11' 11 12 if command -v java > /dev/null 2>&1; then 13 # Example: openjdk version "11.0.6" 2020-01-14 14 version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | cut -d'.' -f1,2) 15 if echo "${version}" "${MIN_JAVA_VER}" | awk '{ if ($2 > 0 && $1 >= $2) exit 0; else exit 1}'; then 16 echo 'Passed Java version check' 17 else 18 echo "Please upgrade your Java to version ${MIN_JAVA_VER} or greater" 19 exit 1 20 fi 21 else 22 echo "Java is not available, please install Java ${MIN_JAVA_VER} or greater" 23 exit 1 24 fi 25 26 # No forknet.jar but we have a Maven built one? 27 # Be helpful and copy across to correct location 28 if [ ! -e forknet.jar -a -f target/forknet*.jar ]; then 29 echo "Copying Maven-built Forknet JAR to correct pathname" 30 cp target/forknet*.jar forknet.jar 31 fi 32 33 # Limits Java JVM stack size and maximum heap usage. 34 # Comment out for bigger systems, e.g. non-routers 35 # or when API documentation is enabled 36 # JAVA MEMORY SETTINGS BELOW - These settings are essentially optimized default settings. 37 # Combined with the latest changes on the Forknet Core in version 4.6.6 and beyond, 38 # should give a dramatic increase In performance due to optimized Garbage Collection. 39 # These memory arguments should work on machines with as little as 6GB of RAM. 40 # If you want to run on a machine with less than 6GB of RAM, it is suggested to increase the '50' below to '75' 41 # The Forknet Core will utilize only as much RAM as it needs, but up-to the amount set in percentage below. 42 JVM_MEMORY_ARGS="-XX:MaxRAMPercentage=50 -XX:+UseG1GC -Xss1024k" 43 44 # Although java.net.preferIPv4Stack is supposed to be false 45 # by default in Java 11, on some platforms (e.g. FreeBSD 12), 46 # it is overridden to be true by default. Hence we explicitly 47 # set it to false to obtain desired behaviour. 48 nohup nice -n 20 java \ 49 -Djava.net.preferIPv4Stack=false \ 50 ${JVM_MEMORY_ARGS} \ 51 -jar forknet.jar \ 52 1>run.log 2>&1 & 53 54 # Save backgrounded process's PID 55 echo $! > run.pid 56 echo forknet running as pid $!