Простейший запуск приложения на java выглядит таким образом java -jar my-app.jar и поехали. А если нужно открыть порт для дебагера? А если затюнить параметры для JVM?

Вот скрипт который удобно использовать для запуска java (да и не только java) как сервис.

Синтаксис выполнения: ./start.sh start|stop|restart

Не забудьте дать права на выполнения после создания ;)

#!/bin/sh
 
APPNAME="Java Application"
APPCODE=javaapp
APPBASE=/opt/my-java-app
APPPID=$APPBASE/$APPCODE.pid
APPJAR=$APPBASE/my-java-app.jar
APPOPTS="-XX:-LoopUnswitching -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
 
case $1 in
    start)
        echo "Starting $APPNAME server ..."
        if [ ! -f $APPPID ]; then
            nohup java $APPOPTS -jar $APPJAR $APPBASE 2>> /dev/null >> /dev/null &
            echo $! > $APPPID
            echo "$APPNAME started!"
        else
            echo "$APPNAME is already running ..."
        fi
    ;;
 
    stop)
        if [ -f $APPPID ]; then
            PID=$(cat $APPPID);
            echo "Stopping $APPNAME..."
            kill $PID;
            echo "$APPNAME stopped!"
            rm $APPPID
        else
            echo "$APPNAME is not running ..."
        fi
    ;;
 
    status)
        if [ !  -f $APPPID ]; then
            echo "$APPNAME is stop"
        else
            echo "$APPNAME is start"
        fi
    ;;
 
    *)
        echo "Choose an option start/stop/status for the service"
    ;;
esac

P.S. Скрипт не идеален, не учитывает некоторые моменты. Например, если приложение во время запуска упадет, скрипт все равно будет считать его запущенным, так как проверка состояния происходит исключительно по проверки файла с PID приложения.