tm

Имеется приложение в виде jar файла + Ubuntu 20 как ОС для запуска.

Для начала размещаем наше приложение в директории, например /opt/invent/

Важно сделать приложение appName.jar исполняемым, т.е. выполнить

chmod +x /opt/invent/appName.jar

Далее создаём директорию для размещения скрипта и сам скрипт для запуска jar и делаем его тоже исполняемым:

mkdir /etc/systemd/system/invent
nano /etc/systemd/system/invent/invent
#!/bin/bash
case $1 in
    start)
        result="$(pgrep -f appName.jar)"
if [[ ${result} ]]; then
    echo "It\`s already running and has PID `pgrep -f appName.jar`"
else
    cd /opt/invent-rest && /usr/bin/java -jar /opt/invent/appName.jar >/dev/null 2>&1 &
    echo "Jar has been  started and has PID `pgrep -f appName.jar`"
fi
    ;;
    stop)
        result="$(pgrep -f appName.jar)"
        if [[ ${result} ]]; then
                pgrep -f appName.jar | xargs kill -2 >/dev/null 2>&1
                echo "Process PID ${result} has been killed"
        else echo "Process is not runnig";
        fi
    ;;
    restart)
        result="$(pgrep -f appName.jar)"
        if [[ ${result} ]]; then
                pgrep -f appName.jar | xargs kill -2 >/dev/null 2>&1
                echo "Process has been killed..."
                sleep 1
                cd /opt/invent-rest && /usr/bin/java -jar /opt/invent/appName.jar >/dev/null 2>&1 &
                new_result="$(pgrep -f appName.jar)"
                echo "and started again PID ${new_result}"
        else
                cd /opt/invent-rest && /usr/bin/java -jar /opt/invent/appName.jar >/dev/null 2>&1 &
                just_result="$(pgrep -f appName.jar)"
                echo "Just started PID ${just_result}"
        fi
    ;;
esac
exit 0

 

chmod +x /etc/systemd/system/invent/invent

Следующим шагом создаём файл для создания службы

nano /etc/systemd/system/invent.service
[Unit]
Description=AppName

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/systemd/system/invent/invent start
ExecStop=/etc/systemd/system/invent/invent stop
ExecReload=/etc/systemd/system/invent/invent restart

[Install]
WantedBy=multi-user.target

 

systemctl daemon-reload
systemctl enable invent-rest.service

Тем самым добавляем в автозагрузку наше Java приложение.

После этого начинают работать команды

service invent start
service invent stop
service invent restart

Комментарии отключены