Skip to content

Instantly share code, notes, and snippets.

@hmngwy
Created August 9, 2014 04:55
Show Gist options
  • Save hmngwy/a712ef3357c39d32288c to your computer and use it in GitHub Desktop.
Save hmngwy/a712ef3357c39d32288c to your computer and use it in GitHub Desktop.

Revisions

  1. hmngwy created this gist Aug 9, 2014.
    105 changes: 105 additions & 0 deletions languagetool
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,105 @@
    #!/bin/sh
    #
    # init script for a Java application
    #

    # Check the application status
    #
    # This function checks if the application is running
    check_status() {

    # Running ps with some arguments to check if the PID exists
    # -C : specifies the command name
    # -o : determines how columns must be displayed
    # h : hides the data header
    s=`ps -C 'java -cp /path/to/languagetool/languagetool-server.jar org.languagetool.server.HTTPServer --public --port 80' -o pid h`

    # If somethig was returned by the ps command, this function returns the PID
    if [ $s ] ; then
    return $s
    fi

    # In any another case, return 0
    return 0

    }

    # Starts the application
    start() {

    # At first checks if the application is already started calling the check_status
    # function
    check_status

    # $? is a special variable that hold the "exit status of the most recently executed
    # foreground pipeline"
    pid=$?

    if [ $pid -ne 0 ] ; then
    echo "The application is already started"
    exit 1
    fi

    # If the application isn't running, starts it
    echo -n "Starting application: "

    # Redirects default and error output to a log file
    java -cp /path/to/languagetool/languagetool-server.jar org.languagetool.server.HTTPServer --public --port 80 >> /path/to/languagetool.log 2>&1 &
    echo "OK"
    }

    # Stops the application
    stop() {

    # Like as the start function, checks the application status
    check_status

    pid=$?

    if [ $pid -eq 0 ] ; then
    echo "Application is already stopped"
    exit 1
    fi

    # Kills the application process
    echo -n "Stopping application: "
    kill -9 $pid &
    echo "OK"
    }

    # Show the application status
    status() {

    # The check_status function, again...
    check_status

    # If the PID was returned means the application is running
    if [ $? -ne 0 ] ; then
    echo "Application is started"
    else
    echo "Application is stopped"
    fi

    }

    # Main logic, a simple case to call functions
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    status
    ;;
    restart|reload)
    stop
    start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|reload|status}"
    exit 1
    esac

    exit 0