Я запускаю свой сервис на Amazon EC2, созданном из сценария CloudFormation.
Я помещаю служебный файл в /etc/rc.d/init.d/myService
. (включая функции «старт» и «стоп»).
Я также связал это так:
/etc/rc.d/rc0.d/K00myService -> /etc/rc.d/init.d/myService
/etc/rc.d/rc6.d/K00myService -> /etc/rc.d/init.d/myService
Но когда я удаляю стек CloudFormation и EC2 отключается, служба «остановки» никогда не вызывается.
Версия для linux:
~> cat /etc/*-release
NAME="Amazon Linux AMI"
VERSION="2015.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2015.03"
PRETTY_NAME="Amazon Linux AMI 2015.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2015.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Amazon Linux AMI release 2015.03
Что мне не хватает?
Ваш сценарий инициализации создает файл блокировки /var/lock/subsys/<service>
при запуске? Если этого не произойдет, процесс завершения работы будет предполагать, что подсистема не запущена, и не будет пытаться остановить службу.
Если это проблема, вам необходимо изменить сценарии запуска и остановки, чтобы сценарий запуска создавал файл блокировки при запуске (например, запустив touch /var/lock/subsys/<service>
), а сценарий остановки удаляет файл блокировки при завершении работы.
Источники: