2013-10-29 39 views

回答

0

您可以使用跟踪记录的用户,重点关注正在运行的进程。下面的场景做到这一点:

#!/bin/sh 
mv current.log previous.log #Use two log file for compare users 
ps aux | awk " {print $ 1}" |sort | uniq > current.log #Here unique users list 
diff current.log previous.log | grep ">\|<" #comparring users lists 

在结果您可以查看旁边:

< avahi #logout user 
> 123 #login user 
> sfdfs #login user 
+0

我只需要知道用户是否已登录或注销,并且如果可能的话在什么时间。 – user1454833

+0

我已经更新了答案。我希望对你有好处 –

2

要查看哪些用户当前登录的,也有传统的命令whow在Unix系统。调用这些不受限制。由于隐私原因,当用户登录或关闭时,不应允许普通用户看到

这就是为什么你想要做什么不能用你可以得到的东西正确实现的原因。您将不得不使用变通办法,每个变通办法都会有警告。

迈克尔的答案通过记录当前用户列表(他正在使用ps,但我更喜欢whow来完成此任务)来尝试实现您的目标。如果这是定期完成的(每分钟或每小时左右),稍后您可以扫描日志文件以了解何时出现和消失。我会使用这样的:

#!/bin/bash 

log() { 
    line=$(who | cut -d' ' -f1 | sort -u) 
    echo "$(date): " $line # _NO_ quotes around $line! 
} 

while sleep 3600 
do 
    log >> user.log 
done & # do this in the background 

每行驶一个小时,这将日志谁是在线文件user.log

+0

感谢您的帮助,我已经成功地将who命令与diff和循环结合起来。再次感谢! – user1454833

0

另外,也许last命令是你可以使用的。