如何记录 Linux 机器上的所有命令?

如何记录 Linux 机器上的所有命令?

早上好,
我的同事创建了一个脚本,用于在基于 UNIX 和 Linux 的机器上执行编译命令。为了执行该脚本,需要在该机器上安装 Eclipse。

现在我面临一台无法安装Eclipse的机器,同事给我发了compile.log的结果,如下:

g++ <options> ../<filename1.c>
g++ <options> ../<filename2.c>
...

为什么这是个问题?
嗯,“filename1.c”和“filename2.c”不在同一目录中:在记录编译命令时,似乎记录了编译命令,但没有记录“cd 'new directory'”命令,这意味着对于几乎每个文件(超过 6000 个),我都需要找出它们位于哪个目录中。

为了解决这个问题,我想让我的同事在日志文件中也包含“cd”命令,我能想到的最好的方法就是将所有命令都放在 compile.log 中。因此我需要一个配置,在输入命令时执行以下操作:

<prompt> <command_to_execute>
<prompt_result> <command_to_execute>
<prompt_result> <command_result>

而目前我有:

<prompt> <command_to_execute>
<prompt_result> <command_result>

有人知道怎么做吗?(所有信息,Linux 系统是 Ubuntu,无法修改命令,只能修改执行命令的机器)

答案1

您可以尝试使用 acct sudo apt-get install acct。然后使用 command lastcomm $USER

编辑抱歉@music2myear说得含糊其辞。acct 包是一个进程记账系统。该包有命令 ac 和 lastcomm。lastcomm 显示该工具记录的先前由系统用户执行的命令。

不确定它是否能给你提供你正在寻找的具体信息,但你似乎需要查看某种审计工具来跟踪用户正在做什么。以下是一些链接,可获取更多信息http://www.tldp.org/HOWTO/Process-Accounting/pasetup.htmlhttp://www.tldp.org/HOWTO/pdf/Process-Accounting.pdf

希望这可以帮助。

答案2

您可以简单地将历史文件定向到新的外部文件中:

echo $HISTFILE >> output-001.txt

这是您问题的答案吗?请告诉我。上面的命令行当然可以在脚本中使用。

相关内容