全天、每天执行的所有命令的Linux历史记录

全天、每天执行的所有命令的Linux历史记录,linux,Linux,我需要有一个所有命令的列表,以及linux用户在一整天、每天执行命令的时间 为此,我创建了一个shell脚本,其中使用了history命令并在crontab中调度。 但它没有任何产出 谁能帮我一下吗?还建议是否有其他更好的方法来使用代码 提前谢谢 #!/bin/bash dt1=$(TZ=GMT+18:30: date +%d/%m/%y) dt=$(TZ=GMT+18:30: date +%d-%m-%y) mkdir /tmp/comm_hist/$dt chmod 777 /tmp/com

我需要有一个所有命令的列表,以及linux用户在一整天、每天执行命令的时间

为此,我创建了一个shell脚本,其中使用了history命令并在crontab中调度。 但它没有任何产出

谁能帮我一下吗?还建议是否有其他更好的方法来使用代码

提前谢谢

#!/bin/bash
dt1=$(TZ=GMT+18:30: date +%d/%m/%y)
dt=$(TZ=GMT+18:30: date +%d-%m-%y)
mkdir /tmp/comm_hist/$dt
chmod 777 /tmp/comm_hist/$dt

for user in `cat /etc/passwd | grep  "bash" | cut -d":" -f1`
do
su - $user <<EOF
HISTFILE=~/.bash_history
set -o history
#history | grep "$dt1" > /tmp/comm_hist/$dt/$user.txt
history  > /tmp/comm_hist/$dt/$user.txt
EOF
done
#/bin/bash
dt1=$(TZ=GMT+18:30:date+%d/%m/%y)
dt=$(TZ=GMT+18:30:date+%d-%m-%y)
mkdir/tmp/comm_hist/$dt
chmod 777/tmp/comm_hist/$dt
对于'cat/etc/passwd | grep“bash”| cut-d中的用户:-f1`
做
su-$user/tmp/comm_hist/$dt/$user.txt
EOF
完成

你不打算提供你写的shell脚本吗?我委托的古代诸神来占卜脚本已经很累了,他们希望你把它放在你的问题中。这似乎是徒劳的尝试。无论您对shell命令历史记录做什么,都不会显示所有执行的命令,因为shell历史记录可以很容易地禁用、绕过或根本不使用。对于这种审计,您可能需要研究一些内核级的解决方案。您还可以在运行新shell时使用
script
来记录所有会话。也许有点暴力。听起来你可能需要研究Linux的进程记帐功能。。。