Простейший запуск приложения на 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 приложения.