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
