使用户 systemd 服务持久化

ras*_*spi 8 arch-linux tmux systemd

我有这个~/.config/systemd/user/weechat.servicesystemd 服务,它运行良好,但在系统升级后,该进程被终止了,这是它以前没有做的。当与 SSH 会话断开连接时,该进程会立即终止。

[Unit]
Description=Weechat IRC Client (in tmux)
After=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux -2 -u new-session -d -s irc /usr/bin/weechat
ExecStop=/usr/bin/tmux kill-session -t irc

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

地位:

% systemctl --user status weechat.service
? weechat.service - Weechat IRC Client (in tmux)
   Loaded: loaded (/home/<user>/.config/systemd/user/weechat.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2017-10-05 22:54:54 EEST; 18h ago
  Process: 504 ExecStart=/usr/bin/tmux -2 -u new-session -d -s irc /usr/bin/weechat (code=exited, status=0/SUCCESS)
 Main PID: 504 (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/user@1000.service/weechat.service
           ??506 /usr/bin/tmux -2 -u new-session -d -s irc /usr/bin/weechat
           ??507 /usr/bin/weechat
Run Code Online (Sandbox Code Playgroud)

/etc/systemd/logind.conf

[Login]
KillUserProcesses=no
Run Code Online (Sandbox Code Playgroud)

我已经启动系统并尝试重新启动systemd-logind.service

哪个配置文件/进程/守护进程在注销后发出终止?

小智 10

您需要告诉 systemd “逗留”您的用户:

# loginctl enable-linger <user>
Run Code Online (Sandbox Code Playgroud)

这将导致您的用户服务在启动时启动,并在您注销后登录(例如关闭您的 ssh 会话)。

  • 要查看是否为您的用户启用了延迟,请执行 `loginctl show-user $(whoami) --property Linger`。 (3认同)