> On Oct 15, 2018, at 16:17, Uoti Urpala <uoti.urp...@pp1.inet.fi> wrote:
> 
> On Mon, 2018-10-15 at 15:09 -0700, Johannes Ernst wrote:
>> I have several programs A, B and C that, while they are running, require 
>> memcached.service to be running.
>> When none of A, B, or C is running, I want memcached.service to not run 
>> either.
>> A, B and C should share the same memcached instance.
>> 
>> How do I best express this?
>> 
>> I was thinking I would have a foo@.service, which would be started by A, B 
>> and C as foo@A, foo@B, and foo@C right when they come up, and stopped before 
>> they quit. This foo@.service would have a dependency on memcached.service, 
>> but otherwise not do anything.
> 
> Why this indirection through "foo" instead of direct dependencies? Are
> A, B and C not systemd services, so you require "foo" as a placeholder
> that reflects their dependencies?

Yes, they are something else than a systemd service, in my example simply 
long-running batch programs.

>> 1. There isn’t a Type=Noop, so having an ExecStart=/bin/true might be my 
>> best option?
> 
> I think a service with Type=oneshot and RemainAfterExit=true should
> work with no ExecStart lines.

"Service lacks both ExecStart= and ExecStop= setting. Refusing.”

That presumably could be a .target but having a dummy exec is fine.

>> 2. How do I get memcached.service to stop automatically? A Requires= seems 
>> to keep it running even after all foo@.service have gone away.
> 
> Add StopWhenUnneeded=true to the configuration of the memcached
> service.

Ah. There’s always one more keyword somewhere :-)

Thank you,


Johannes.

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to