15.09.2019 6:12, Daniel Duong пишет:
> Hi,
> 
> I have a 2 template units: 1 for a service and 1 for a socket. Each
> instance is a version of my web application.
> 
> After a successful deploy, I stop and disable the old version and I
> enable the new one:
>       systemctl start [email protected]
>       # Test that everything is fine
>       systemctl enable [email protected]
>       systemctl stop [email protected]
>       systemctl stop [email protected]
>       systemctl disable [email protected]
> 
> I've done that for a few versions now, and it seemed to work OK. There
> is a little problem though. The old versions are still loaded:
> 
>       $ systemctl --no-legend --all list-units belleshop@*
>       [email protected] loaded active   running Belleshop server
>       [email protected]  loaded inactive dead    Belleshop server
>       [email protected]  loaded inactive dead    Belleshop server
>       [email protected]  loaded inactive dead    Belleshop server
>       [...]
>       [email protected]  loaded active   running Belleshop socket
>       [email protected]   loaded inactive dead    Belleshop socket
>       [email protected]   loaded inactive dead    Belleshop socket
>       [email protected]   loaded inactive dead    Belleshop socket
>       [...]
> 
> Is there any way I can unload these old versions?
> 
> Here are my unit files:
> 
> [email protected]:
>       [Unit]
>       Description=Belleshop server
>       Requires=belleshop@%i.socket
>       After=network.target
> 
>       [Service]
>       User=belleshop
>       Group=belleshop
>       ExecStart=/opt/belleshop/bin/belleshop-%i.pyz server --bind 
> unix:/run/belleshop/belleshop-%i.sock
>       ConfigurationDirectory=opt/belleshop/
>       StateDirectory=belleshop
>       CacheDirectory=belleshop
>       RuntimeDirectory=belleshop
>       Environment="SHIV_ROOT=/var/cache/belleshop"
>       RuntimeDirectoryPreserve=yes
>       StandardOutput=journal
>       StandardError=inherit
> 
>       [Install]
>       WantedBy=multi-user.target
> 

This pins all service units

> [email protected]:
>       [Unit]
>       Description=Belleshop socket
> 
>       [Socket]
>       ListenStream=/run/belleshop/belleshop-%i.sock
> 
>       [Install]
>       WantedBy=sockets.target
> 


And this pins all socket units.

Units are not unloaded if they are part of dependency chain, and here
units are Wanted by another unit(s).

I am not sure if reloading systemd will help here. It preserves current
state across reload so it comes up with the same dependencies. There is
really no way to tell systemd that this unit no more exists. It was
never designed for such dynamic reconfiguration.
_______________________________________________
systemd-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to