![如何记录 Linux 机器上的所有命令?](https://linux22.com/image/1485196/%E5%A6%82%E4%BD%95%E8%AE%B0%E5%BD%95%20Linux%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E7%9A%84%E6%89%80%E6%9C%89%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
早上好,
我的同事创建了一个脚本,用于在基于 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.html和http://www.tldp.org/HOWTO/pdf/Process-Accounting.pdf
希望这可以帮助。
答案2
您可以简单地将历史文件定向到新的外部文件中:
echo $HISTFILE >> output-001.txt
这是您问题的答案吗?请告诉我。上面的命令行当然可以在脚本中使用。