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
얼마나 많은 사용자 정의 변경 사항을 유지해야 하는지는 모르겠지만 최소한 chdir
및 exec
명령은 유지해야 할 것 같습니다.
다음은 앱에 대한 기본 시스템 스크립트의 예입니다.
[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