[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вот как бы этому вашему systemd объяснить...



On Wed, 25 Oct 2017 12:56:29 +0300
Alex Kicelew <arkoort@gmail.com> wrote:


> > 
> > Вот что надо туда дописать, чтобы systemd понимал, что если процесс
> > vws autostart завершился с нулевым кодом и не оставил ни одного
> > потомка, то так и надо, и сервис active, а ExecStop при покладании
> > системы надо выполнять?
> >   
> 
> Не уверен, что правильно понял задачу (недостаточно подробно описаны
> возможные кейзы), но если понял правильно, то:

В результате старта сервиса могут быть порождены процессы-потомки, а
могут быть и не порождены. Поэтому я немножко не уверен, что oneshot
это то, что надо.

Далее, в процессе работы загруженной системы могут быть запущены
процессы, которые с точки зрения systemd не имеют отношения к данному
сервису, а с моей - имеют. И команда, запускаемая по ExecStop их
корректно завершит.

Поэтому команда ExecStop должна выполняться независимо от того были ли
ли запущены в результате ExecStart долгоживущие процессы. Но если они
были, то обращаться с ними надо как в случае Type=forking

 
> 1) чтобы процесс считался запущенным при завершении ExecStart с

В данном случае, наверное, "сервис считался запущенным", а  не
"процесс". То есть с моей точки зрения это выглядит как "сервис
считается запущенным, даже если ни одного рабочего процесса не создано".

> нулевым кодом вне зависимости от того, породились потомки, или нет, и
> при этом не считался запущенным, если ExecStart вышел с ненулевым
> кодом: Type=oneshot
> RemainAfterExit=yes
> 
> 2) если процесс в результате 1) считается запущенным, то ему будет
> выдан ExecStop
> 


Reply to: