2

我想获取执行命令的用户的名称(例如cat)。

fc -l将提供一个列表,其中包含当前用户执行的最新命令,但有没有办法找出所有用户的历史记录?我阅读了手册,但找不到有用的东西

你知道其他可以完成这项工作的命令吗?我也试过wwho

我找到了这个解决方案:超级用户将在 .bash_history 中的“home”中搜索每个目录,并在该文件上为该命令创建一个 grep。它会起作用,但这是最优的吗?

4

1 回答 1

1

使用 =)

awk -v monitoredcmd=cat '
    $1~"^#[0-9]{10,}\s*$"{
        sub(/#/,"")
        tmpdate=$1
    }
    $1==monitoredcmd{
        "date -d @"tmpdate | getline date
        close("date -d @"tmpdate) 
        print "command [" $0 "] by",
            gensub(/\/home\/([^\/]+).*/, "\\1", "", FILENAME),
            at,
            date
    }
' /home/*/.bash_history

样本输出

command [cat file.txt] by sputnick  mer. févr. 13 15:34:44 CET 2013
command [cat l.py] by sputnick  mer. févr. 13 15:45:38 CET 2013
command [cat foobar.pl] by marc  mer. févr. 13 15:47:54 CET 2013
于 2013-03-17T19:03:15.890 回答