podman在用户退出时服务中断
现象
自己通过podman generate
生成了systemd
文件,再文件中指定运行用户User=xxx
,放置在/etc/systemd/system
文件夹,想通过systemd
来管理其服务。但是该服务总是在登录用户退出后就中断了。
原因
systemd 用户实例在用户首次登陆时启动,并在最后一个会话退出时终止。
参照:Systemd/用户
解决方法
1、调整文件放置位置
因为podman
运行时不需要root
权限,在root
用户下运行容器也违背了我们的初衷,之前想通过在service
文件中指定用户也有点本末倒置了。正确的方式应该是将service
文件放置在~/.config/systemd/user/
文件夹中。
2、非用户模式的systemd
通过systemctl --user
来运行用户模式下的systemd
$ systemctl --user enable xx
$ systemctl --user start xx
通过这样指定之后,用户登录时就会自动运行,同时在用户最后一个会话登出时会自动终止。
3、启用用户登录驻留
为避免用户登出后服务中断可通过以下命令来启用驻留指定用户:
# loginctl enable-linger username