Systemd 用户服务未启动

Systemd 用户服务未启动

我正在尝试让用户服务在启动时启动。

适用于 Linux 上的 Tableau(Ubuntu 19.04 服务器,无 gui)

Tableau 创建一个非管理员用户来运行其服务。并创建一个 systemd 服务

/etc/systemd/system/[email protected]这里是

[Unit]
Description=User Manager for UID %i
After=systemd-user-sessions.service
[Service]
LimitNOFILE=131072
LimitNPROC=32768
User=%i
PAMName=systemd-user
Type=notify
PermissionsStartOnly=true
ExecStartPre=/bin/loginctl enable-linger %i
ExecStart=/lib/systemd/systemd --user
Slice=user-%i.slice
KillMode=mixed
Delegate=yes
TasksMax=infinity
Restart=always
RestartSec=15
[Install]
WantedBy=default.target

如果我只是重新启动主机并以不相关的用户身份登录,然后检查我发现问题显然与运行有关systemctl status [email protected]systemd --user 在此输入图像描述

如果我sudo su - tableau自己尝试一下,它要么抱怨没有/run/user/$(id -u)目录,要么 $XDG_RUNTIME_DIR 未定义,要么它无法切片(我忘记了哪个,现在无法重新启动产品服务器来再次检查) journalctl -xe揭示更多细节 在此输入图像描述

因此,pam_systemd 无法查看/列出/run/user/ID,因此它不会设置$XDG_RUNTIME_DIRsystemd --user运行,因为 tableau 很生气,这会导致user@997服务失败。

如果我在控制台上登录到“tableau”用户(ID 997),甚至通过 SSH 登录,它似乎会创建一个“登录”会话,并且/run/user/997整个事情会继续进行,一切正常填写并开始。之后,一旦/run/user/997创建并且服务尝试加载一次,则保持良好enable-linger状态user@997,我可以毫无问题地注销,并且一切都保持正常运行,正如它应该的那样。

我的观点是,据我从文档中看到(大概是从 Tableau 的经验来看,因为他们的 init 进程默认设置了这一点)User=997 ; PAMName=systemd-user 应该 正在工作。和应该通过 systemd 生成一个 uid 997/tableau 的进程,但无论出于何种原因,这都没有定义该/run/user/997区域

一旦找到目录/run/user/997,它就会快速加载服务,然后 tableau 就开始启动其内部初始化过程

然后user@997状态看起来像这样在此输入图像描述

相关内容