---
schema_version: "1"
id: 80f6b52a2ec17bdf8a6018cbcb6b612e4db1304c2c66d16bfac326efb4566033
title: Systemd 用户服务失败
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/server-linux/systemd_user_service_error.md
canonical_url: https://help.tableau.com/v0.0/server-linux/zh-cn/systemd_user_service_error.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 27c4d09f03c54752ca94469172b2080d88dd57ef949aa645198c1ee8b6a95718
description: Troubleshoot systemd user service failures on Tableau Server for Linux.
---
[跳转到主要内容](#main-content)

# Systemd 用户服务失败

升级时或在全新安装期间运行 `initialize-tsm` 时可能会收到以下错误之一：

- “Failed to get D-Bus connection: No such file or directory”（无法获取 D-Bus 连接：没有此类文件或目录）
- “$XDG\_RUNTIME\_DIR not found”（找不到 $XDG\_RUNTIME\_DIR）
- “systemd unit user@<userID> is not running.Check /var/log/messages or /var/log/syslog.”（“systemd 单元用户@<用户 ID> 未运行。请检查 /var/log/messages 或 /var/log/syslog。”）

## 背景

自 2018.1 起，Tableau Server 使用 `systemd` 用户服务来管理进程。这意味着有一个以无特权用户身份运行的 `systemd` 进程。默认情况下，Tableau Server 安装程序将创建名为 `tableau` 的无特权帐户。Tableau Server 进程派生自 `systemd` 进程，而不是以 root 用户身份运行的 `systemd` 系统范围进程。

**重要信息**：此故障排除说明主要适用于基于 RHEL 7 的发行版。但是，如果您看到这些错误之一，则 Ubuntu 发行版上可能存在同样的问题。

`systemd` 用户服务不像标准 `systemd` 过程管理器那样常用。Red Hat 禁用了 RHEL 7 中的 `systemd` 用户服务（并因此禁用了来自 RHEL 的所有发行版，比如 CentOS、Oracle Linux 7、Amazon Linux 2 中的该用户服务）。但是，RedHat 向 Tableau 保证，只要重新启用该服务，就支持运行 `systemd` 用户服务。

## 从 Linux 版 Tableau Server 10.5 升级

如果要从 Tableau Server 10.5 升级，请检查非特权用户是否具有有效的 shell 和主目录。对于 Tableau Server 10.5，Tableau 特意创建了 shell 设置为 `/sbin/nologin` 并且主目录设置为 `/` 的无特权用户。如果非特权用户是通过 `initialize-tsm` 创建的，则在升级到 2018.1 期间，Tableau 将更新 shell 和主目录。

但是，如果在 10.5 的初始安装过程中创建了非特权用户，则在尝试升级时将出现错误。

若要解决此问题，必须将 shell 设置为 `/sbin/nologin`，并将主目录设置为“`/`”，然后再次运行升级。

## 排查全新安装错误

验证 `systemd` 用户服务是否正在运行。

通过运行 `ps -fww $(pgrep -f "systemd --user")` 命令进行检查

如果 `systemd` 用户服务未运行，则某些内容阻止其启动。

请按照此列表进行故障排除：

- 检查 `/var/log/messages` 中的日志
- 运行 `journalctl`
- 验证您可能对 PAM 配置进行的任何自定义是否未删除 `pam_systemd.so`。
    
    如果 RHEL 7 PAM 文件 `/etc/pam.d/system-auth` 缺少以下行：
    
    `-session optional pam_systemd.so`
    
    然后必须将其添加回 Tableau Server 才能运行。
- 如果 PAM 配置中有 `-session optional pam_systemd.so`， 存在，则用户服务无法启动，并且错误消息 `$XDG_RUNTIME_DIR not found` 显示在 `/var/log/messages` 中，请不要尝试设置环境变量。在这种情况下，错误不准确。
    
    真正的错误是 PAM 模块 `pam_systemd.so` 无法分配用户会话。默认配置禁止来自 `pam_systemd.so` 的错误消息。若要显示错误消息并调试消息，请将 `/etc/pam.d/system-auth` 中的行从 `-session optional pam_systemd.so` 更改为 `session optional pam_systemd.so debug`。（移除前导连字符将呈现错误消息，而添加 `debug` 将显示更详细的日志记录。）
    
    现在，您可以在 `/var/log/messages` 和 `/var/log/secure` 文件中查看 `/var/log/audit/audit.log` 错误消息。

## 示例

您可能会看到以下错误消息：

```
systemd
```

在这种情况下，联机搜索错误会进入 Redhat KB 文章 [https://access.redhat.com/solutions/2460611](https://access.redhat.com/solutions/2460611)。

本文建议通过运行 `sudo yum update selinux-policy` 更新 `selinux-policy` 包。

在某些情况下，从版本 3.12.X 升级到 3.13.X 可解决 `$XDG_RUNTIME_DIR not found` 问题。请务必在更新包之后运行 `sudo reboot`。