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中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark