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

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效