实用技巧,用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命令的使用技巧,可以大大提高我们的工作效率和系统监控能力。

如果小伙伴对该脚本感兴趣的可以关注我的公众号,私信回复ptar即可获取该脚本

相关推荐

  • 10个非常炫酷的 JavaScript 动画库!!!
  • 同事给我介绍了个私活儿,说1万报酬全给我,昨天快要交片之前,我私下问了下甲方,结果甲方说你同事白拿了很多。
  • 超简单下载网站视频,两个日常生活中极为实用的开源高星项目
  • Logback 与 log4j2 性能哪个更强?
  • CVPR 2024满分论文出炉!这些方向杀疯了!
  • 本科生连发两篇AI顶会后,再发大模型顶刊!
  • 一文吃透Transformer代码与应用【附226篇顶会论文】
  • APP如何与H5通信?
  • 超火超实用的 10 个前端工具库,可能就是你一直在寻找的~
  • AI浪潮,Spring也赶上了!?
  • 盘点历届 Java 语言的关键字,一定有你不认识的
  • 用 Lag-Llama 进行时间序列预测实战
  • 这算是裁到大动脉了吧
  • [开源]轻松构建车联网平台,可应用于各种车辆监管场景和应用平台
  • Kubernetes新手必看:快速生成YAML清单的终极指南!
  • 记一次疑似JVM内存泄漏的排查过程
  • 高中信息技术考试竟然有Flash、IIS、Frontpage、Access、VB……
  • 带您认识物联网首选协议MQTT
  • 29.3K Star强!集成微信登录,核心代码就10行
  • 下半年!真心建议大家冲一冲新兴领域,工资高前景好