1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | #!/bin/bash # # 3DS Server Admin UI control script. usage() { cat <<EOF Usage: $0 <options> < command > This script allows to control 3DS Server Admin UI instance (i.e. start /stop it). OPTIONS: -c The configuration home directory -j The Java options to set (optional). See examples below... -f Keep the started java process in the foreground (optional). -h Show this message COMMANDS: start Starts a 3DS Server Admin UI node stop Stops a 3DS Server Admin UI node Java option examples: Set the maximum heap space for the 3DS Server Admin UI to 1024 MB and the maximum PermGen space to 256 MB: -Xmx1024m -XX:MaxPermSize=256m Enable JSSE (Java Secure Socket Extension) debug output (Check http: //docs .oracle.com /javase/8/docs/technotes/guides/security/jsse/JSSERefGuide .html #Debug for details): -Djavax.net.debug=all EOF } # Set defaults for command line arguments THREEDS_ADMIN_UI_HOME=$( cd $( dirname "$0" )/..; pwd ) THREEDS_ADMIN_UI_CONFIG_HOME= "$THREEDS_ADMIN_UI_HOME/conf/" JAVA_OPTS= "" DAEMON_MODE= "true" # Read command line arguments while getopts "fn:c:j:h" OPTION do case $OPTION in c) THREEDS_ADMIN_UI_CONFIG_HOME=$OPTARG ;; j) JAVA_OPTS=$OPTARG ;; f) DAEMON_MODE= "false" ;; h) usage exit ;; n) echo "Ignored option -n." ;; \?) echo "Unknown option: -$OPTARG" >&2 exit 1 ;; :) echo "Missing option argument for -$OPTARG" >&2 exit 1 ;; *) echo "Unimplemented option: -$OPTARG" >&2 exit 1 ;; esac done shift $(($OPTIND-1)) # Set variables THREEDS_ADMIN_UI_JAR= "$THREEDS_ADMIN_UI_HOME/lib/nca-3dss-admin-ui.jar" PID_FILE= "$THREEDS_ADMIN_UI_HOME/pid/node.pid" CURRENT_DATE=` date + "%Y-%m-%d" ` CATALINA_OUT= "$THREEDS_ADMIN_UI_HOME/out/catalina.out" # Check files and directories assert_file_exists_and_is_readable() { if [[ ! -f $1 || ! -r $1 ]]; then echo "File $1 doesn't exist or is not readable" >&2 exit 1 fi } assert_directory_exists_and_is_writable() { if [[ ! -d $1 || ! -w $1 ]]; then echo "Directory $1 doesn't exist or is not writable" >&2 exit 1 fi } create_directory_if_not_exists() { if [[ ! -d $1 ]]; then mkdir $1 fi } assert_file_exists_and_is_readable $THREEDS_ADMIN_UI_JAR assert_directory_exists_and_is_writable "$THREEDS_ADMIN_UI_HOME" create_directory_if_not_exists "$THREEDS_ADMIN_UI_HOME/pid/" create_directory_if_not_exists "$THREEDS_ADMIN_UI_HOME/out/" # Execute command COMMAND=$1 case $COMMAND in start) if [[ -e $PID_FILE ]]; then PID=$(<$PID_FILE) CURRENT_PID=` ps aux | awk '{print $1}' | grep "^$PID$" ` if [[ "$CURRENT_PID" - eq "$PID" ]]; then echo "3DS Server Admin UI node seems to be already started (there is a active PID for this node)" exit 0 else rm $PID_FILE fi fi cd $THREEDS_ADMIN_UI_HOME if [[ $DAEMON_MODE = "true" ]]; then java $JAVA_OPTS -jar $THREEDS_ADMIN_UI_JAR --spring.config.name=application --spring.config.additional-location=$THREEDS_ADMIN_UI_CONFIG_HOME > $CATALINA_OUT 2>&1 & echo $! > $PID_FILE else java $JAVA_OPTS -jar $THREEDS_ADMIN_UI_JAR --spring.config.name=application --spring.config.additional-location=$THREEDS_ADMIN_UI_CONFIG_HOME fi ;; stop) if [[ ! -e $PID_FILE ]]; then echo "3DS Server Admin UI node seems not to be started (there is no PID file for this node)" exit 0 fi PID=$(<$PID_FILE) kill $PID rm $PID_FILE ;; *) usage exit 1 ;; esac |