当前位置: 首页 > news >正文

【Linux】tee 命令使用详解

一、tee 命令概述

tee是 Linux/Unix 系统中数据流分流的核心命令,名称源自 T 型三通管道,形象描述其功能:从标准输入读取数据,同时输出到屏幕(标准输出)和一个 / 多个文件。

它完美解决 “既要实时看输出、又要留存日志” 的需求,是运维调试、脚本日志、权限写入的必备工具,区别于普通重定向>/>>,保留终端显示是其核心优势。

二、基本语法

执行命令:man tee查看官方手册

命令 | tee [选项] 文件名1 文件名2 ...
  • 从管道 / 标准输入读取数据
  • 同时输出到:终端屏幕 + 指定文件
  • 支持多文件输出,空格分隔即可

三、命令选项及作用

选项长选项作用说明
-a--append追加写入文件,不覆盖原有内容
-i--ignore-interrupts忽略中断信号(如Ctrl+C),保证写入完整
-p--output-error对非管道写入错误做诊断提示
-u-无缓冲写入,实时输出
--help-显示帮助信息并退出
--version-输出版本信息并退出

四、常用命令示例

1. 基础用法:屏幕显示 + 覆盖写入文件

ls -l | tee file_list.txt
  • 终端实时显示目录列表
  • 同时覆盖写入file_list.txt,文件已存在则清空重写

2. 追加模式:不覆盖,尾部添加内容

echo "新增日志内容" | tee -a run.log
  • 保留文件原有数据,新内容追加到末尾
  • 适合持续记录脚本 / 命令运行日志

3. 同时写入多个文件

dmesg | tee kernel.log /tmp/dmesg.bak
  • 一份输入,同时输出到多个文件,高效备份

4. 忽略中断信号(长时间任务必备)

ping www.baidu.com | tee -i ping.log
  • Ctrl+C中断时,仍保证已输出内容完整写入文件

5. 无缓冲实时写入(监控场景)

tail -f access.log | tee -u realtime_backup.log
  • 禁止数据缓冲,日志实时同步到备份文件

6. 配合 sudo 写入权限文件(经典场景)

普通重定向>无权限,tee可绕过:

echo "export PATH=\$PATH:/usr/local/bin" | sudo tee -a /etc/profile
  • 直接修改系统配置文件,无需切换 root 用户

7. 只写入文件,不显示屏幕

ps aux | tee process.txt > /dev/null
  • 输出重定向到黑洞,仅留存文件,不占用终端

8. 捕获标准错误(完整日志)

make 2>&1 | tee build.log
  • 2>&1将错误输出合并到标准输出,完整留存编译日志

五、高级应用:脚本全程日志记录

#!/bin/bash # 脚本功能:备份数据并留存完整日志 exec 2>&1 # 合并标准错误 exec > >(tee backup_$(date +%Y%m%d).log) # 全程分流输出 echo "【$(date)】开始备份任务..." tar -czf /backup/data.tar.gz /data/ echo "【$(date)】备份完成,文件大小:$(du -h /backup/data.tar.gz | awk '{print $1}')"
  • 脚本所有输出实时显示 + 自动归档,便于事后排查问题

六、退出状态说明

  • 0:所有输出目标写入成功
  • >0:至少一个文件写入失败(其他成功文件仍保留)

七、核心总结

  1. 核心作用:一进多出,屏幕 + 文件同时输出
  2. 默认行为:覆盖写入,需追加用-a
  3. 高频组合:sudo tee解决权限问题,2>&1捕获完整日志
  4. 适用场景:运维调试、脚本日志、实时监控、权限写入
http://www.jsqmd.com/news/1378334/

相关文章:

  • 深入解析计算机三大字长:机器字长、存储字长与指令字长
  • UVM验证中uvm_do宏的底层机制与实战调试指南
  • XPRA远程桌面转发器:原理、部署与性能调优实战指南
  • Linux网络配置排错:vi打开ifcfg-ens33文件为空的深度解析与解决方案
  • 抖音批量下载终极指南:5分钟解决无水印视频获取难题
  • 仅需1分钟语音数据!GPT-SoVITS:零门槛打造专属AI语音助手的神器
  • IoT架构师转型:用Java与LangChain4j构建AI智能体运维助手
  • 【主线五】AI 自动生成测试:单元 + Contract + E2E + Mutation 全栈实战
  • yt-dlp-gui:Windows平台终极免费视频下载解决方案完整指南
  • Python 内存管理-DeepSeek
  • 从插件到站点:AI驱动开发范式转向与Codex Sites实战部署
  • Visual Studio调试LIB库:PDB文件配置与第三方库调试实战
  • WarcraftHelper终极指南:快速解决魔兽争霸III兼容性问题
  • AgentScope Java Harness:1. 如何优雅地驾驭长期运行的 AI Agent
  • 解决dcgm-exporter GPU监控指标间歇性丢失的排查指南
  • dcgm-exporter GPU监控指标缺失排查指南:从NVML原理到容器化实战
  • 基于LangGraph构建三层嵌套智能体架构:从原理到实践
  • 免费图片转3D模型神器:ImageToSTL终极使用指南
  • 广拓时代GEO:AI搜索优化不可错过的供应商落地篇
  • Windows 11多显示器全屏显示问题解决方案
  • CF思维题训练:提升程序员逻辑与问题解决能力
  • 为什么需要DDrawCompat?让老游戏在现代Windows上完美运行的终极方案
  • 从DSSM到工业级双塔模型:推荐系统召回层的演进与实战
  • WarcraftHelper终极指南:5大核心功能让你的魔兽争霸III体验焕然一新
  • 中小微企业电销外包合规方案与落地实测参考 - GrowthUME
  • 中文优化PC版流程图工具:高效绘图与协作解决方案
  • GROOPS安装配置全攻略:从Linux环境搭建到卫星重力数据处理实战
  • Win10系统安装3Ds Max 2020报错1603的完整诊断与根治方案
  • 大模型推理服务性能优化:从5万到2000万日调用的生产级实践
  • BiliDownloader:免费开源的B站视频下载神器完全指南