我有一些用户在 Ubuntu 和 Arch Linux systemd 系统上以延迟模式运行。这意味着,即使用户未登录系统,他们的计时器也可以运行。作为 root 用户,我如何查看所有活动的计时器,包括所有用户的计时器?
systemctl list-timers
将为我提供系统计时器。如果我以用户身份登录,systemctl --user list-timers
将为我提供该用户的计时器。但是,如果我运行,sudo -u anotheruser systemctl --user list-timers
则将获得Failed to connect to bus: No such file or directory
。
答案1
感谢 Freenode #systemd IRC 频道(用户 dreisner 和 damjan),我了解到 systemd 需要用户运行systemctl --user list-timers
才能打印正在运行的计时器。
如果系统管理员sudo
或su
作为其他用户想要查看计时器,则他们需要设置XDG_RUNTIME_DIR
环境变量。
例如sudo -u $anotheruser XDG_RUNTIME_DIR=/run/user/$anotheruser_uid systemctl --user list-timers
将返回$anotheruser
计时器。
答案2
最干净的解决方案是执行以下操作......
sudo systemctl --machine=<username>@.host --user list-timers
<username>
用适当的替换,并systemctl
应填充所需的环境。