为什么从 systemd 单元启动 xsel 时需要“--nodetach”选项?

为什么从 systemd 单元启动 xsel 时需要“--nodetach”选项?

我正在尝试采用Alexey Samoshkin 的方法将文本从远程 tmux 会话复制到本地剪贴板。我使用xsel而不是xclip,并使用 systemd 用户服务而不是系统一。这是我的工作配置:

/etc/systemd/user/xsel.socket:

[Unit]
Description=xsel network listener socket

[Socket]
ListenStream=54793
Accept=yes

[Install]
WantedBy=sockets.target

/etc/systemd/user/[email protected]:

[Unit]
Description=xsel network listener service

[Service]
Type=simple
ExecStart=/usr/bin/xsel --input --clipboard --nodetach

StandardInput=socket
StandardOutput=socket

xsel 版本 1.2.0
systemd 245(245.6-8-arch)

一切都按预期工作,但只有使用--nodetach选项。没有这个选项,剪贴板根本不会改变。你能解释一下为什么吗?

答案1

如果服务分离,则它无法stdout再写入任何内容。因此--nodetach需要保留stdout(并能够重定向它)。

相关内容