Linux之终端信息输出到日志文件

在做调试的时候,需要观察终端输出的内容,有时候终端输出太多会被覆盖掉,并且直接在终端观察不太方便。将终端输出的内容保存在日志文件中,一方面可以便于查看输出内容,另一方面可以永久保存,便于回看。因此本文对相关的方法进行整理总结。

方法一

把命令运行的结果保存到文件当中:用 > 把输出转向就可以了,如

$ ls > ls.txt    #或者 ls-->ls.txt    #把ls命令的运行结果保存到文件ls.txt中

说明: > 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留
    >> 是把输出附向到文件的后面,文件原内容会保留下来

方法二

上面的方法在写入文件的时候,终端没有任何输出,如果想要同时在终端显示,需要用tee指令

$ ls | tee ls.txt   #将会在终端上显示ls命令的执行结果,并把执行结果输出到ls.txt 文件中   
$ ls | tee -a ls.txt   #保留ls.txt文件中原来的内容,并把ls命令的执行结果添加到ls.txt文件的后面

方法三

上面的方法是写一句指令的输出,如果需要运行多条指令,还用同样的方法,就会比较麻烦,这个时候就用到了script指令

$ script
#Script. started, file is typescript
$ ls
#…… 内容省略
$ exit
#exit
#Script. done, file is typescript

我们在启动script时没有指定文件名,它会自动记录到当前目录下一个名为 typescript的文件中。也可以用 -a参数指定文件名,比如

$script. -a example.txt  #终端的输出内容被记录到 example.txt这个文件中

退出script时,用exit,事实上script就是启动了一个shell

### 将Linux系统终端输出重定向到文件Linux系统中,可以轻松地将命令行工具的标准输出(stdout)和标准错误(stderr)重定向至指定文件。以下是几种常用的方法: #### 使用简单的输出重定向操作符 `>` 通过使用大于号 (`>`), 用户能够把某个命令的结果写入到一个新的文件里,如果该文件已存在,则会被覆盖。 ```bash ls > file_list.txt ``` 此命令会列出当前目录中的所有条目并将结果保存到`file_list.txt`中[^1]。 为了防止意外覆盖现有数据,在追加模式下工作更为安全——即向已有内容之后添加新信息而不是替换整个文档。这可以通过双箭头符号(`>>`)实现: ```bash date >> log_file.txt ``` 上述例子会在每次运行时于`log_file.txt`内附加日期时间戳记而不影响之前的内容。 #### 同时捕获标准输出与标准错误流 有时不仅希望收集成功的消息也想记录任何可能发生的警告或异常情况;这时就需要同时处理两个不同的输出通道了。一种方法是先定义好目标位置再利用特殊的句法结构将其关联起来: ```bash command &> all_output.log ``` 这里`&>`意味着无论正常还是异常的信息都将被导向同一个地方存储下来。 另一种方式是指定具体的描述符编号来进行更精确控制: ```bash (command 2>&1) > combined_log.txt ``` 这段脚本首先建立了一个子shell环境以便内部调整顺序,接着让原本属于 stderr 的部分跟随 stdout 流动方向一致,最后统一指向外部文件完成持久化过程[^4]。 #### 利用管道与其他高级特性 除了基本形式外还有更多灵活的选择可用于满足特定需求场景下的应用开发任务。比如借助 tee 工具可以在打印的同时做副本存档: ```bash ps aux | tee process_snapshot.out ``` 这条语句展示了如何实时查看进程状态的同时制作一份快照留作日后分析之用。 对于长时间运行的任务来说,启动前激活 script 功能不失为一个好的习惯,它可以全程跟踪交互式的对话流程直至手动终止为止,并自动生成详尽的日志档案供后续查阅参考: ```bash script session_record.log ``` 一旦结束录制只需键入 exit 或者发送 EOF 即可停止记录并返回正常的 shell 提示符界面。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗而研之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值