「tar」- 限制资源使用

更新日期:2020年03月09日

问题描述

在使用 tar 进行解压时,会占用大量的系统资源(CPU,I/O),导致系统卡死或其他服务无法响应。尤其是压缩包较大且解压时间较久时,会直接导致其他服务不可用。在使用 tar 进行压缩时,虽然我们没有遇到类似问题,但是也可能存在这种问题。

我们希望找到一种方法限制 tar 所使用的系统资源,不管是打包还是压缩。

解决方法

方法一、(推荐)使用 pv 命令

pv,用于监控流经管道的数据的进度,它的角色类似于安装在水管上水表。虽然它不能限制特定程序的资源使用情况,但是它可以控制数据的读取速度。

(1)由 pv 负责读取数据,并通过选项控制 pv 的读取速度
(2)将数据写入管道
(3)而 tar 从管道中读取数据进行解压

方法二、使用空闲主机

如果有可能,则可以在空闲主机上进行操作,有必要则可以通过网络进行数据传回(比如使用 rsync 命令)。

方法三、使用 Docker 服务

有点大材小用,而且麻烦(需要安装环境),但是也算可用途径。

方法四、我们的方法

由于解压任务并非当务之急,我们有条件将工作放在夜间执行:

#!/bin/sh

sleep 4h && tar -xf someshit.tar.gz

参考文献


ToC

问题描述

解决方法

方法一、(推荐)使用 pv 命令

方法二、使用空闲主机

方法三、使用 Docker 服务

方法四、我们的方法

参考文献