如何查看所有用户的 systemd 计时器?

如何查看所有用户的 systemd 计时器?

我有一些用户在 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才能打印正在运行的计时器。

如果系统管理员sudosu作为其他用户想要查看计时器,则他们需要设置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应填充所需的环境。

相关内容