/ 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 $!