我想知道是否有类似于UNIX中的事件监听器的东西可以让程序订阅?具体来说我想知道:
Start and end times of a user session
Start and end of the applications executed by that user
有小费吗?
答案1
使用 psacct
您可以通过以下方式找到您要查找的活动普萨克特。具体来说,我会看一下ac
显示用户会计信息的工具。我在 U&L 问答中谈到了这一点,标题为:用于确定服务器使用级别的命令。
笔记:这不是一个可订阅的“服务”,而是一个跟踪和报告基础设施,您可以向它提问。
您还可以使用lastcomm
(psacct 的一部分,套件中包含多个工具)来查明用户 X 何时使用给定的应用程序。
例子
$ lastcomm rm
rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:38
你必须深入研究一下,psacct
但 U&L 和 google 上有很多关于它的资源,应该可以让你得到你想要的东西。
使用auditd
另一个工具,与psacct
跟踪和报告方法一样徒劳,是auditd
。您auditd
可以查询以了解谁运行了程序 X 以及运行了多长时间。
例子
$ sudo ausearch -x /usr/bin/sudo | head -5
----
time->Sat Dec 7 21:15:15 2013
type=USER_AUTH msg=audit(1386468915.558:419): pid=2189 uid=1000 auid=1000 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="saml" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
----
time->Sat Dec 7 21:15:15 2013
笔记:上面是查找某人运行该工具的所有条目/usr/bin/sudo
。