我想获取执行命令的用户的名称(例如cat
)。
fc -l
会提供一个列表,其中包含当前用户执行的最新命令,但有没有办法找出所有用户的历史记录?
我阅读了手册,但找不到有用的东西
你知道其他任何可以做这项工作的命令吗?
我还尝试了w
和who
我找到了这个解决方案:超级用户将在.bash_history中的“home”中搜索每个目录,并为该命令在该文件上创建一个grep。它会起作用,但这是最佳的吗?
答案 0 :(得分:1)
使用awk =)
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