我有一个 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 帖子对我不起作用。我不断收到“无法远程访问用户实例”的消息。
解决方法是使用runuser
root 身份:
runuser -l userNameHere -c 'systemctl --user stop user-service.service'
编辑:我忘了提及,这也适用于以下内容:
su - userNameHere -c 'systemctl --user stop user-service.service'
但所有这些只有在用户实际登录时才有效(通过直接终端、GUI 或 SSH)。