У меня есть script.sh, который устанавливает переменную окружения и запускает сервер Java.
#!/bin/bash
export JAVA_HOME="/opt/java"
export ....
nohup $JAVA_HOME/bin/java "$MEMORY_JAVA_OPS" -classpath "$MY_CLASSPATH" $MAIN_CLASS &
Я бы хотел преобразовать этот скрипт (теперь запускается /etc/rc.d/rc.local) в сервис.
Я перепробовал много примеров, найденных в Интернете и поверх StackOverflow.
Я создал файл myservice.service, используя множество шаблонов, найденных в Интернете ... Никто не работает!
один пример:
[Unit]
Description=MyService Java Process Restart Upstart Script
After=auditd.service systemd-user-sessions.service time-sync.target
[Service]
User=root
TimeoutStartSec=0
Type=simple
KillMode=process
#export JAVA_HOME=/opt/java/jdk-9
#export PATH=$PATH:$JAVA_HOME/bin
WorkingDirectory=/tmp/myworkdir
ExecStart=/path/to/myscript.sh
[Install]
WantedBy=multi-user.target
В некоторых конфигурациях служба запускается, но команда status говорит, что она не работает (хотя она на самом деле работает). С других это не начинается. Ни с одним это останавливается с командой stop ....
Я пытался Type=Simple
, разветвление, onehot ... всегда какая-то проблема.
Я бы просто, что после загрузки или когда пользователь запускает systemctl запускает myservice, сервис запускается, и если через некоторое время сбой будет запущен снова. И если я запускаю systemclt stop myservice, он останавливается и не нужно останавливать процесс.