以 root 用户身份停止 systemd 用户服务

以 root 用户身份停止 systemd 用户服务

我有一个 systemd [email protected],服务器上的每个用户都可以从它开始。systemd --user start [email protected]

作为 root,我想在进行维护时停止为所有用户提供该服务。

我还没有在 systemd man 中找到方法,甚至没有通过冲突。有没有办法以 root 身份停止用户服务?

答案1

--user作为 root,systemd 支持使用和标志的组合对用户服务执行操作--machine...

例如

systemctl --user --machine=<user>@.host <command> <service>

或者,它可以缩短为(在本地主机上)

systemctl --user --machine=<user>@ <command> <service>

IE

systemctl --user --machine=jtingiris@ stop a-user.service

这记录在man 1 systemctl...

-M,--machine=

在本地容器上执行操作。指定要连接的容器名称,可以选择以要连接的用户名和分隔@符“”作为前缀。如果使用特殊字符串“ .host”代替容器名称,则会建立到本地系统的连接(这对于连接到特定用户的用户总线:“ ”很有用)。如果未使用“ ”语法,则将以 root 用户身份进行连接。如果使用“ ”语法,则可以省略左侧或右侧(但不能同时省略两者),在这种情况下,隐含本地用户名和“ ”。--user [email protected]@@.host

答案2

@Joseph Tingiris 帖子对我不起作用。我不断收到“无法远程访问用户实例”的消息。

解决方法是使用runuserroot 身份:

runuser -l userNameHere -c 'systemctl --user stop user-service.service'

编辑:我忘了提及,这也适用于以下内容:

su - userNameHere -c 'systemctl --user stop user-service.service'

但所有这些只有在用户实际登录时才有效(通过直接终端、GUI 或 SSH)。

相关内容