如何正确编写一个服务,允许使用 start.sh 启动应用程序(其中有一个 bash 命令)并监视(.jar)应用程序?
[Unit]
Description=Some service
After=syslog.target
[Service]
User=userXService
Restart=always
RestartSec=300s
WorkingDirectory=/opt/test/target
ExecStart=/opt/test/start.sh
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
start.sh
包含具有一些环境变量的 bash 脚本:
#!/bin/bash
MEMORY="-Xms640m -Xmx640m"
HEAP_DUMP="-XX:+HeapDumpOnOutOfMemoryError"
SECURITY_RANDOM="-Djava.security.egd=file:/dev/./urandom"
REMOTE_JMX="-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.rmi.port=16078 -Dcom.sun.management.jmxremote.port=16078 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
cd $DIRECTORY/target
java $HEAP_DUMP $MEMORY $SECURITY_RANDOM $REMOTE_JMX -jar test-application.jar --spring.profiles.active=database >> ../test-application.log 2>&1 &`