On Wed, 25 Oct 2017 12:56:29 +0300 Alex Kicelew <[email protected]> wrote:
> > > > Вот что надо туда дописать, чтобы systemd понимал, что если процесс > > vws autostart завершился с нулевым кодом и не оставил ни одного > > потомка, то так и надо, и сервис active, а ExecStop при покладании > > системы надо выполнять? > > > > Не уверен, что правильно понял задачу (недостаточно подробно описаны > возможные кейзы), но если понял правильно, то: В результате старта сервиса могут быть порождены процессы-потомки, а могут быть и не порождены. Поэтому я немножко не уверен, что oneshot это то, что надо. Далее, в процессе работы загруженной системы могут быть запущены процессы, которые с точки зрения systemd не имеют отношения к данному сервису, а с моей - имеют. И команда, запускаемая по ExecStop их корректно завершит. Поэтому команда ExecStop должна выполняться независимо от того были ли ли запущены в результате ExecStart долгоживущие процессы. Но если они были, то обращаться с ними надо как в случае Type=forking > 1) чтобы процесс считался запущенным при завершении ExecStart с В данном случае, наверное, "сервис считался запущенным", а не "процесс". То есть с моей точки зрения это выглядит как "сервис считается запущенным, даже если ни одного рабочего процесса не создано". > нулевым кодом вне зависимости от того, породились потомки, или нет, и > при этом не считался запущенным, если ExecStart вышел с ненулевым > кодом: Type=oneshot > RemainAfterExit=yes > > 2) если процесс в результате 1) считается запущенным, то ему будет > выдан ExecStop >

