---
schema_version: "1"
id: 22252992ae47b253a8c94d97d9a6528747f7f27c3cd5560ff940657c9ac26221
title: Systemd 使用者服務失敗
collection: tableau
version: next
locale: zh-tw
portal_url: https://docs.salesforce.com/tableau/next/zh-tw/server-linux/systemd_user_service_error.md
canonical_url: https://help.tableau.com/v0.0/server-linux/zh-tw/systemd_user_service_error.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 8edcc183cf2fcd378737466fc98cb34e1a18a01063ab3c7032d44282a46bfc5f
description: Troubleshoot systemd user service failures on Tableau Server for Linux.
---
[跳至主要內容](#main-content)

# Systemd 使用者服務失敗

升級時或在全新安裝期間執行 `initialize-tsm` 時，您可能會收到以下其中一種錯誤：

- 「無法取得 D-Bus 連線：找不到這個檔案或目錄」
- 「找不到 $XDG\_RUNTIME\_DIR」
- 「systemd 單元使用者@<userID> 並未執行。請檢查 /var/log/messages or /var/log/syslog。」

## 背景

自 2018.1 起，Tableau Server 皆使用 `systemd` 使用者服務來管理程序。也就是說系統中有一個 `systemd` 程序以無權限使用者身份執行。預設情況下，Tableau Server 設定會建立名為 `tableau` 的無權限帳戶。Tableau Server 程序衍生自 `systemd` 程序，而非以根目錄執行的系統層級 `systemd` 程序。

**重要提示**：此疑難排解說明主要適用於 RHEL 7 發行版。不過，如果您看到上述其一錯誤，很可能 Ubuntu 發行版也存在同樣的問題。

`systemd` 使用者服務並不如一般 `systemd` 程序管理員那樣常用。Red Hat 停用了 `systemd` RHEL 7 中的使用者服務（因此 CentOS、Oracle Linux 7、Amazon Linux 2 等所有來自 RHEL 的發行版皆不可用）。但是，RedHat 向 Tableau 擔保只要重新啟用服務，就能支援執行 `systemd` 使用者服務。

## 從 Linux 10.5 的 Tableau Server 升級

如果要從 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 才能運作。
- 如果 `-session optional pam_systemd.so` 存在 PAM 組態中，使用者服務無法啟動，且錯誤訊息 `$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`。