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使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler