有人在我当地的 LUG 邮件列表中询问是否有任何方法可以了解 GNU/Linux 系统上发出的最后一条命令。
我想我们是在谈论系统范围内的最后一个命令。经过一段时间的推理,如果你将命令集限制为实际用户使用交互式控制台发出的命令,那么最后一个命令应该已经注册在命令历史记录中。
思考这个问题的另一种方式是询问如何判断在 GNU/Linux 机器上创建的最后一个进程是哪个,是否仍在运行或者已经完成执行,哪个是父进程以及其他相关信息。
答案1
我找到了一个有助于流程核算的 Linux 软件包。
在我的 Ubuntu 9.10 系统上,我执行以下操作来安装程序“acct”:
sudo apt-get install acct
然后需要创建一个空白日志文件,您可以这样做:
sudo touch /var/log/pacct
此后,需要激活流程会计:
sudo /usr/sbin/accton /var/log/pacct
从那时起,进程与执行它们的用户和相关终端一起记录。
可以使用以下命令查看日志文件:
lastcomm -f /var/log/pacct
我仍在研究这个程序...但看起来它有帮助。
答案2
对于特定用户(和 shell):history
对于当前进程:ps
答案3
嗯,系统范围的系统看起来相当复杂。这样的系统意味着应该有一些进程来监控每个用户的 .bash_history。然后当它更新时,中央数据库也会更新。一旦完成,我们就可以扩展“history”命令,从中央数据库中选择。不过这不是一个坏主意。
答案4
您可以使用史努比监视所有执行的命令。