实用技巧,用lsof命令监控tar文件解压进度,简单有效!

在Linux系统中,tar命令是一个非常常用的工具,用于创建和解压缩归档文件。尽管tar命令本身没有提供直接查看解压进度的功能,但我们可以借助lsof(List Open Files)命令来间接监控解压进度。本文将详细介绍如何使用lsof命令来查看tar包的解压进度。

工具介绍

  • lsof: List Open Files是一个强大的工具,用于列出系统中所有打开的文件及其相关信息。

  • stat:命令用于显示文件或文件系统的状态信息,包括大小、权限、修改时间等。

获取当前解压的偏移量

tar 包已经在解压中如何知道解压进度?

lsof这个命令可以做到,这个命令的字面的意思,是列出打开的文件。

root@ubuntu:~# lsof -o0 -oFo test.tar.xz
p1113
o0t771962880
  • o: 设置偏移量重0开始
  • oFo: 格式化输出为易于解析的形式

关注结果的最后一列,其中字母o表示文件的偏移量,0表示偏移量从零开始,t表示偏移量类型为十进制。数值 771962880表示文件已经被打开并处理的数据偏移量,单位为字节。

了解文件当前已被打开的大小后,只需将其除以文件的总大小,就可以计算出解压的进度。

获取文件总大小

那么如何知道当前文件的总大小呢?

可以使用stat命令打印文件的总大小,并可以字节为单位显示。

root@ubuntu:~# stat -c %s test.tar.xz
4194314240

计算解压进度

现在我们可以构造以下的命令进行显示当前解压进度:

lsof -o0 -oFo test.tar.xz  \
| awk -Ft -vS=$(stat -c %s test.tar.xz) \
'/^o/{printf( "%d%%\n", 100*$2/S)}'
  • -vS: 定义一个变量S并赋值为当时解压文件总大小

使用dd命令构造一个大文件,用于测试,具体命令如下:

dd if=/dev/urandom of=test bs=4M count=1000  #构造一个4G的大文件
tar -cvf test.tar.xz test  # 把当前目录下的test文件压缩成test.tar.xz

打开一个终端,解压当前目录下的test.tar.xz文件,如下图:

tar -xvf test.tar.xz

打开另外一个终端,执行如下命令查看当前解压的进度:

封装命令

为了简化操作,我们可以将这些步骤集成到一个脚本中。保存以下脚本为 ptar.sh,具体的内容如下:

ptar.sh

使用别名的方式,创建一个别名,方便后续对改脚本的调用。编辑 ~/.bashrc ,添加以下行:

alias ptar='~/ptar.sh'

重新加载配置文件:

source ~/.bashrc

使用别名运行脚本:

ptar test.tar.xz

运行结果如下:

总结

虽然tar命令本身不提供直接的解压进度显示,但我们可以巧妙地使用lsof命令监控tar进程打开的文件,从而间接判断解压进度。这种方法特别适用于处理大型tar包或包含大量文件的归档文件,在系统运维和日常管理中非常实用。通过掌握lsof命令的使用技巧,可以大大提高我们的工作效率和系统监控能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/718170.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Drake 机器人仿真

sudo apt-get install,pip3 install,sudo apt install这些命令是在Linux系统中用于安装软件包或Python库的不同方法,它们分别属于不同的包管理系统和工具。 sudo apt-get install: 这是在Debian、Ubuntu等基于Debian的系统上用于从…

Android Studio 2024.1.1(Koloa)版本 Profiler 工具变动

在 Android Studio 2024.1.1 (Koloa) 版本当中,Profiler 工具终于迎来了重大 UI 更新(太感动了,因为之前的 Profiler 工具连接得慢,收集 Trace 信息还很卡,步骤繁琐等,这次更新有了很大的优化) …

低代码组件扩展方案在复杂业务场景下的设计与实践

组件是爱速搭的前端页面可视化模块的核心能力之一,它将前端研发人员从无休止的页面样式微调和分辨率兼容工作中解放了出来。 目前,爱速搭通过内置的上百种功能组件(120),基本可以覆盖大部分中后台页面的可视化设计场景…

Windows10笔记本如何系统重装?64位电脑重装系统需小心!一键安装超详细步骤!

在日常生活和工作中,我们有时会遇到Windows 10笔记本系统运行缓慢、频繁出现错误或受到病毒攻击等问题。这时,重装系统就成了解决这些问题的最佳选择。然而,对于许多用户来说,尤其是64位电脑用户,重装系统可能是一项既…

小程序开发平台源码系统商业运营版 带完整的安装代码包以及搭建教程

系统概述 小程序开发平台源码系统商业运营版 是一套基于现代技术栈开发的,专为中小企业及个人开发者设计的小程序快速开发与运营管理解决方案。该系统采用模块化架构设计,集成了代码生成器、可视化拖拽编辑器、多端适配引擎、云端部署、数据统计分析等多…

【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上

【JAVA】SpringBoot skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上 1.下载SkyWalking APM https://skywalking.apache.org/downloads/ jdk8 不支持 SkyWalking APM 9.3.0以上版本,所以这里我们下载 9.3.0版本 2.下载 Java Agent …

网站的图片都是怎么处理的

我们平常见到的很多网站里面都有很多地图片,那么这些图片的文件是怎么处理的呢。图片是一个网站的重要元素之一,图片可以给用户直接的视觉冲击,好的图片则可以迎来不少的流量。图片有大有小,都是根据网站的局部需要而确定图片的尺…

清远mes管理系统助力企业降本增效

清远MES管理系统可以帮助企业降本增效的方式包括但不限于以下几个方面: 生产过程优化:清远MES系统可以实时监控生产过程中的各个环节,包括设备状态、生产进度、质量指标等,帮助企业管理人员及时了解生产情况并做出相应的调整和控制…

Redis作者长文总结LLMs, 能够取代99%的程序员

引言 这篇文章并不是对大型语言模型(LLMs)的全面回顾。很明显,2023年对人工智能而言是特别的一年,但再次强调这一点似乎毫无意义。相反,这篇文章旨在作为一个程序员个人的见证。自从ChatGPT问世,以及后来使…

10+分享:适合外包的开源后台管理系统【送源码】

1. D2admin 开源地址:https://github.com/d2-projects/d2-admin 文档地址:https://d2.pub/zh/doc/d2-admin/ 效果预览:https://d2.pub/d2-admin/preview/ 开源协议:MIT 2. vue-element-admin 开源地址:https://gi…

git删除已创建tag标签

前言 一不小心把tag标签名称复制错了&#xff0c;现将删除 1.删除本地标签 1.1.执行下面命令 git tag -d 1.5.2401161.5.240116是创建的tag标签名称 2.如果是删除远程的tag标签名称的话&#xff0c;看下面命令 2.1.删除远程标签 git push --delete origin <tagname>…

C++ SIMD性能优化

// 使用SIMD指令优化的向量加法 //<mmintrin.h> MMX //<xmmintrin.h> SSE //<emmintrin.h> SSE2 //<pmmintrin.h> SSE3 //<tmmintrin.h> SSSE3 //<smmintrin.h> SSE4.1 //<nmmintrin.h> SSE4.2 //<wmmintrin.h> AES //<imm…

算法解析:有序数组的平方(以JS为例)

题目&#xff1a; 算法解析 算法概述 这个算法的目标是计算一个数组中每个元素的平方&#xff0c;并将结果存储在一个新的数组中&#xff0c;同时保持结果数组的排序顺序。它使用了三个指针&#xff1a;i、j和k&#xff0c;分别指向当前考虑的较小元素、较大元素和结果数组的…

【数据结构】排序(下)

个人主页~ 排序&#xff08;上&#xff09; 栈和队列 排序 二、常见排序的实现8、快速排序的优化9、非递归快速排序&#xff08;1&#xff09;基本思想&#xff08;2&#xff09;代码实现&#xff08;3&#xff09;时间复杂度&#xff08;4&#xff09;空间复杂度 10、归并排序…

kali中安装zsteg教程

1、下载文件 git clone http://www.github.com/zed-0xff/zsteg 2、第一步需要保证虚拟机是有网络的&#xff0c;不然无法克隆 3、可以将网络设置成如下后重启&#xff0c;访问百度看看能不能访问&#xff0c;若可以访问&#xff0c;则进行下一步 4、查看源&#xff0c;删除源&…

✊构建浏览器工作原理知识体系(网络协议篇)

🌻 前言 书接上回~ 系列文章目录: # ✊构建浏览器工作原理知识体系(开篇)# ✊构建浏览器工作原理知识体系(浏览器内核篇)# ✊构建浏览器工作原理知识体系(网络协议篇)✊构建浏览器工作原理知识体系(网页加载超详细全过程篇)为什么你觉得偶尔看浏览器的工作原理,…

程序员日志之计算机相关专业还值得选择吗?

目录 传送门正文日志1、概要2、专业选择2.1、专业2.2、学校2.3、城市 3、计算机相关专业还值得选择吗&#xff1f; 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyB…

【会议】一张图片讲清楚:项目启动会议

另附上启动会前需要准备的内容&#xff1a;

【吉林大学Java程序设计】第10章:Java数据库编程技术(JDBC)

第10章&#xff1a;Java数据库编程技术&#xff08;JDBC&#xff09; 1. 数据库系统概述数据库系统SQL语言 2.JDBC概述JDBC APIJDBC Driver API 3.JDBC编程步骤示例1&#xff1a;MySQL数据库操作程序示例2&#xff1a;Java DB数据库操作程序 重点小结 1. 数据库系统概述 数据库…

当OpenHarmony遇上OpenEuler

1、 安装openEuler 虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件&#xff0c;如果需要安装最新版本&#xff0c;建议使用后者。当前WSL只支持OpenEuler 20.03。 1.1 WSL openEuler WSL的安装都是程序员的必备技能了&#xff0c;…