如何查看Unix中的用户命令历史记录?


13

我知道'history'命令为我提供了我在Unix终端中键入的命令列表。

如何查看当前登录到系统的所有用户的命令历史记录?


与编程无关。我建议您在superuser.com上询问。

没有获取信息的标准工具,因此我认为它与编程(至少在“脚本”意义上)相关。
IanH

Answers:


11

您将获得当前登录用户列表/var/run/utmp(请参阅参考资料man 5 utmp)。历史记录存储在〜/ .history中,或者供bash用户存储在〜/ .bash_history中。其他Shell可能会使用其他历史记录文件,因此要获取真正的所有信息并不容易。

此外,如果用户多次登录,则.bash_history文件并不总是可靠的。

要读取utmp文件,有一个称为的“前端” who,因此您还可以编写一个shell脚本来遍历当前登录的用户。


2
当前历史记录保存在内存中。历史记录文件仅显示使用history -a或类似内容编写的内容,或者显示用户退出外壳时的内容。
暂停,直到另行通知。

2
请注意,此答案中给出的文件名仅是默认值。每个用户都可以设置自己的位置(请参见Joy的答案)。如果用户使用不同的外壳,可以想象他们的历史存储在不同的非默认位置(例如〜/ mybashhist,〜/ histories / ksh等)。另外,请注意,偷看此类用户数据可能会产生法律影响。
DevSolar

3
echo $HISTFILE

然后查看该文件。


1
仅当您先前已获取该用户的环境(因为他可能已设置HISTFILE为其他内容)时,此方法才有效。
DevSolar 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.