Имеется приложение в виде 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
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