我有一个 perl 脚本(这个脚本(确切地说是)根据 MacOS X Snow Leopard 系统上的空闲时间记录用户活动。但是,启用快速用户切换后,可能会有多个用户同时登录。我希望脚本在通过快速用户切换时,如果另一个用户处于活动状态(即使用 GUI),则将计算机视为“空闲”。
有多种方法可以确定用户何时登录。找出用户上次“切换”的时间似乎更困难。到目前为止,我的解决方案是查看记录/var/log/secure.log
快速用户切换事件的位置:
tail -200 /var/log/secure.log | grep "User info context values set" | tail -1
但是,对于运行 perl 脚本的非管理员用户来说,secure.log
将无法读取。是否有其他方法可以找出当前正在主动登录的用户,或者上次快速用户切换事件是什么?
当然,如果我有一种方法可以找出运行脚本的用户的空闲时间,而不是我当前从中获取的计算机的总空闲时间,那么这个问题就可以避免。ioreg
所以,我也愿意接受这方面的建议。
谢谢!
答案1
我不知道如何获取切换后的时间,但您可以通过检查 /dev/console 上的所有权来获取当前活动用户。Perl 中可能有更好的方法,但 stat 命令可以做到这一点:
my $user = `stat -f%Su /dev/console`;