sponge --- linux下保持输入输出一致性的数据流传导工具

本文主要是介绍sponge --- linux下保持输入输出一致性的数据流传导工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

sponge 是什么?
根据 man page 上的描述可知,sponge 是一个最晚诞生于2006年的的数据流传导工具,它不同于shell中的重定向和pipe管道,最大的特性在于保持了输入输出内容原子一致性 。

sponge(1) sponge(1)
NAME
sponge - soak up standard input and write to a file
SYNOPSIS
sed ‘…’ file | grep ‘…’ | sponge file
DESCRIPTION
sponge reads standard input and writes it out to the specified file. Unlike a shell redirect, sponge soaks up all its input before opening the output file. This allows con‐
structing pipelines that read from and write to the same file.
It also creates the output file atomically by renaming a temp file into place, and preserves the permissions of the output file if it already exists. If the output file is
a special file or symlink, the data will be written to it.
If no output file is specified, sponge outputs to stdout.
AUTHOR
Colin Watson and Tollef Fog Heen

sponge能用来干什么?
sponge可以用于抽取数据,典型的应用是Prometheus中传导自定义的指标数据到node_exporter的textfile模块数据中。
还可以在离线数据仓库的构建过程中承担ETL流程中的数据抽取任务,用此种方法可以保证DWD层数据与原始数据 严格一致。(注意:用sponge 抽取非关系型数据库原始数据到DWD层构建数据仓库这个方法本人未进行过TB级别的数据量测试,阿里系和华为系的狂人可能会不认可——甚至怀疑你进行专业知识造假)

如何获取sponge ?
sponge 工具套件在moreutils 套件中,RHEL系列的发行版可以通过添加 EPEL 源的方式进行moreutils 套件安装,参考命令如下:

yum -y install epel-release && yum -y install moreutils

用例参考:

1)在Prometheus 中自定义node_exporter 中执行crontab排程时的应用

***** /root/prom/directory-size.sh /root/prom | sponge /root/prom/textfile/directory_size.prom
2)完整追加新内容

cat 新内容 | sponge -a 目标文件

3)删除以 # 开头的行

grep -v ‘^#’ 被操作文件 | sponge 目标存储文件

这篇关于sponge --- linux下保持输入输出一致性的数据流传导工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/442708

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删