대충 이런거임


example.service - 우분투 16.04에선 /lib/systemd/system에 둬야 됨

[Unit]

Description=TS Service


OnFailure=unit-status-mail@%n.service


[Service]

WorkingDirectory=/home/ts-deploy

ExecStart=/home/ts-deploy/bin/ts-sg.sh

Restart=always


[Install]

WantedBy=multi-user.target


이멜도 서비스를 통해 보냄 - unit-status-mail@.service
[Unit]
Description=Unit Status Mailer Service
After=network.target

[Service]
Type=simple
ExecStart=/home/ts-deploy/bin/unit-status-mail.sh %I "Hostname: %H" "Machine ID: %m" "Boot ID: %b"

실행 쉨 스크립트 - 환경변수 source 후 jar 파일 실행
#!/bin/bash

. /home/ts-deploy/env/ts-systemd.env
. /home/ts-deploy/env/ts-systemd-extra.env
/usr/bin/java -jar /home/ts-deploy/ts-service.jar --log-level info

실패시 이멜 보고 (간단히 하기 위해 아마존 cli를 통해 ses로 이멜 보냄)
#!/bin/bash

SYSTEM=ex-system
FROM=systemd@example.com
TO=engineering-alerts@example.com
SUBJECT="System Failure: ${SYSTEM}"
UNIT=$1
EXTRA=""
for e in "${@:2}"; do
    EXTRA+="$e"$' '
done
UNITSTATUS=$(systemctl status $UNIT)
${EXTRA}

WILL BE RE-STARTED BY SYSTEMD AUTOMATICALLY

${UNITSTATUS}"

/usr/bin/aws ses send-email --from ${FROM} --to ${TO} --subject "${SUBJECT} - unit: ${UNIT}" --text "${BODY}"



뭐 대충 이런 거 ㅇㅇ