重启后找不到systemd用户服务

Ada*_*sen 6 systemd 18.04

我在 16.04 计算机上将同步设置为 systemd 用户服务。工作得很好。由于我升级到 18.04,该服务在重新启动时消失。

重新启动后,我看到:

$ systemctl --user status syncthing.service 
Unit syncthing.service could not be found.
Run Code Online (Sandbox Code Playgroud)

并且syncthing确实没有运行。

这是~/.config/systemd/user/syncthing.service(按照示例,但请注意二进制文件在我的主目录下):

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)

[Service]
ExecStart=/home/user/syncthing-prefix/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

然后我运行这个:

$ systemctl --user enable syncthing.service
$ systemctl --user start syncthing.service
Run Code Online (Sandbox Code Playgroud)

按照我最初用于安装用户服务的设置说明。

运行上面两个命令后,我看到:

$ systemctl --user status syncthing.service
? syncthing.service - Syncthing - Open Source Continuous File Synchronization
  Loaded: loaded (/home/user/.config/systemd/user/syncthing.service; enabled; 
  Active: active (running) since Tue 2018-11-06 15:28:16 PST; 4s ago
    Docs: man:syncthing(1)
Main PID: 4221 (syncthing)
  CGroup: /user.slice/user-1000.slice/user@1000.service/syncthing.service
          ??4221 /home/user/syncthing-prefix/syncthing -no-b

Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Device XXXXXXX-XXXXXXX-XXXXX
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Device XXXXXXX-XXXXXXX-XXXXX
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Device XXXXXXX-XXXXXXX-XXXXX
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: GUI and API listening on 127
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Access the GUI via the follo
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Completed initial scan of se
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Completed initial scan of se
Nov 06 15:28:18 kind syncthing[4221]: [XXXXX] INFO: Completed initial scan of se
Nov 06 15:28:19 kind syncthing[4221]: [XXXXX] INFO: Completed initial scan of se
Nov 06 15:28:20 kind syncthing[4221]: [XXXXX] INFO: Completed initial scan of se
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。然后syncthing按预期工作,直到下一次重新启动。

请注意,我有一个加密的主目录。当我使用 16.04 时也是这种情况。

Tal*_*tle 1

归功于https://unix.stackexchange.com/questions/417162/use-systemd-user-services-with-ecryptfs/545704#545704


这是 ecryptfs 包配置中的一个错误。您可以使用快速修复:打开 /etc/pam.d/common-session 并切换线路

session optional        pam_systemd.so
session optional        pam_ecryptfs.so unwrap
Run Code Online (Sandbox Code Playgroud)

session optional        pam_ecryptfs.so unwrap
session optional        pam_systemd.so
Run Code Online (Sandbox Code Playgroud)

这样 pam_systemd.so 在 pam_ecryptfs.so 之后加载


sol*_*iCe 0

您遇到与https://unix.stackexchange.com/q/417162/116970相同的问题

我建议您在该部分中添加After=和 一行,以便在安装主文件夹后运行同步。Requires=syncthing.service[Unit]

更具体地说,您可以尝试:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)
After=home-yourusername.mount
Requires=home-yourusername.mount

...
Run Code Online (Sandbox Code Playgroud)

并将yourusername替换为您的用户名