앱 서버가 다운되거나 시스템이 재부팅되자마자 앱 서버를 시작하기 위한 systemd 스크립트

앱 서버가 다운되거나 시스템이 재부팅되자마자 앱 서버를 시작하기 위한 systemd 스크립트

Ubuntu 14에서 잘 작동하는 아래와 같은 시작 구성 파일이 있습니다.

#/etc/init/data_server.conf
#sudo start data_server
#sudo stop data_server
#sudo status data_server

start on runlevel [2345]
stop on runlevel [016]

chdir /opt/hold/data_server
respawn

post-start script
    echo "data server started at `date +"%F %T"` on `hostname -f`" | mailx -r "[email protected]" -s "data server Started" "[email protected]"
end script

post-stop script
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec ./data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5

이제 Ubuntu 16으로 이동 중이므로 사용할 수 없으며 여기서 upstart사용해야 할 것 같습니다 . systemd에서 스크립트를 작성하려면 어떻게 변경해야 합니까 systemd?

시스템이 재부팅되거나 앱이 종료될 때마다 systemd자동으로 스크립트가 시작되어 data server.

답변1

시작 스크립트가 많이 변경됩니다. 너무 많은 지시문을 수동으로 지정할 필요가 없으므로 지시문도 훨씬 짧아집니다.

프로세스가 부팅 시 항상 시작되고 충돌 시 다시 시작되도록 만드는 것은 간단히 한 줄입니다.

Restart=always

얼마나 많은 사용자 정의 변경 사항을 유지해야 하는지는 모르겠지만 최소한 chdirexec명령은 유지해야 할 것 같습니다.

다음은 앱에 대한 기본 시스템 스크립트의 예입니다.

[Unit]
Description=My-service

[Service]
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/path/to/data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always

[Install]
WantedBy=multi-user.target

맞춤형 유닛 파일을 작성할 때 이것이 유용한 리소스라는 것을 알았습니다.https://www.freedesktop.org/software/systemd/man/systemd.unit.html

관련 정보