执行命令的用户的名称

时间:2013-03-17 18:22:09

标签: bash shell

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

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

你知道其他任何可以做这项工作的命令吗? 我还尝试了wwho

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

1 个答案:

答案 0 :(得分: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