bash - bash 审计(写入日志文件)
问题描述
我想将我的bash shell 的内容写入日志文件。日志文件应包含STDIN、STDOUT和STDERR。
实现此目的最明显的解决方案是使用script
-executable:
script --flush audit.log
但是有两个缺点:
- 日志文件包含丑陋的字符,例如:^M
- 创建了一个新进程
我正在寻找没有这些缺点的解决方案。我想知道^M来自哪里以及它的含义。
我没有
在infocmp
.
解决方案
要启动一个将所有内容写入 audit.log 的 shell,您可以这样做:
bash -i 2>&1 | tee "audit.log"
有了这个, audit.log 不再包含^M。
2>&1
将STDERR重定向到STDOUT,然后通过管道传送到 tee。Tee 将从管道接收的文本写入STDOUT和文件 audit.log。
为避免启动新进程,您可以使用 bash 内置命令exec
:
exec > >(tee "audit.log" )
exec 2>&1
exec 允许将当前进程的STDOUT重定向到文件。>)
管道到 tee,然后写入STDOUT和audit.log
.
推荐阅读
- macos - 意外的头文件:
- windbg - 什么在 .net 应用程序中使用大型 mem_reserve?
- django - django 中的自定义身份验证不起作用
- android - 日期选择器 - 更改所选日期 Android
- node.js - 当代码在本地运行时,为什么在 heroku 中使用 node.js 会给我不同的结果?
- php - 为什么不能将字符串转换为数字
- python - 如何对“groupby”执行操作,例如美元重量等
- c# - Xamarin 表单中的 System.Net.WebExceptionStatus 异常
- c# - 如何在一个 Outlook VSTO 中使用多个 XML 功能区
- localhost - 管道编辑器中的可见元素