我正在运行 Ubuntu Server 12.04,并尝试记录所有 Shell 命令。我rsyslog
默认尝试这样做。我在f 和中添加了“ *.* /var/log/everything.log
” ,但我只得到了一些条目(登录、注销、服务停止/启动),我想拥有一切。rsyslog.con
50-default.conf
ls, cd [path], [Wrong command]
我是否必须修改 rsyslog 中的某些内容或将任何其他应用程序设置为详细。
谢谢 SP
答案1
作为使用 的替代方法bash_history
,捕获通过你自己并将其保存到文件您可以使用trap
脚本或函数中的命令之类的东西并将该代码放入.bashrc
。
幸运的是, 确切地您想要的脚本由理查德汉森不久以前在这个答案中,他的脚本会复制输入到 bash 中的每个命令,并将它们(带有时间戳)发送到名为.command_log
default 的文件。将他的脚本放入.bashrc
并启动终端后,Richard 的脚本会在.command_log
命令执行后立即写入,而此bash_history
功能仅在终端关闭后才写入文件。
Richard 的脚本将会像这样记录你的命令.command_log
(尽管你使用的命令与我使用的命令不同):
2012-10-02T18:02:11+0100 /dev/pts/2 gksudo truecrypt
2012-10-02T21:52:03+0100 /dev/pts/2 xrandr -s 1280x1024
2012-10-03T00:16:52+0100 /dev/pts/2 mount
2012-10-03T00:17:12+0100 /dev/pts/2 udisks --unmount /dev/sdb1
2012-10-03T00:17:46+0100 /dev/pts/2 udisks --detach /dev/sdb
我已经使用了一段时间,发现 Richard 的脚本非常有用;你甚至可以grep
搜索.command_log
你想要的任何内容:
grep -i udisks .command_log
因此,我认为如果您需要记录输入到 bash 中的每件事,这可能就是您想要的;我发现它非常有用。
答案2
答案3
如果您想要记录整个会话(即输入的命令和这些命令的结果),请使用:
script
如果没有参数,它会将结果保存到当前目录中名为“typescript”的文件中。
script bogus.txt
将保存为“bogus.txt”
请参阅手册页以获取完整的命令列表
man script