我跑:
~$ gzip -d Mom.img.gz
^C
~$
我Mom.img.gz
通过管道 a dd
to创建gzip
。我应该看到输出吗?我也用GUI尝试过,进度条没有动。
答案1
gzip
不,当您使用它来压缩或解压缩时,您通常不会看到任何输出。
例子
假设我有一个示例文件。
$ ll | grep a.img
-rw-rw-r--. 1 saml saml 1474560 Mar 31 21:57 a.img
压缩
$ gzip a.img
$
$ ll | grep a.img
-rw-rw-r--. 1 saml saml 944497 Mar 31 21:57 a.img.gz
解压
$ gzip -d a.img.gz
$
$ ll | grep a.img
-rw-rw-r--. 1 saml saml 1474560 Mar 31 21:57 a.img
gzip
如果您在执行操作时想要更多反馈,您可以包含--verbose
或-v
开关以获得更多输出。
$ gzip -vd a.img.gz
a.img.gz: 35.9% -- replaced with a.img
为什么没有反馈?
如果您认为这gzip
不起作用,那么很可能是这样,而且它实际上运行得很好。您可以通过打开另一个 shell 并运行命令(例如top
或)来观察进程,以确认它实际上正在执行一些有用的操作,htop
以查看gzip
进程运行时正在执行的操作。
您也可以使用这样的命令来“观看”它。
$ watch "ps -eaf | grep [g]zip"
您还可以使用命令行工具pidstat
“监视”进程:
$ pidstat -r 2 -C thunder
Linux 3.13.6-100.fc19.x86_64 (greeneggs.bubba.net) 03/31/2014 _x86_64_ (4 CPU)
10:26:24 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
10:26:26 PM 1000 3323 24.38 0.00 1572252 323264 4.06 thunderbird
10:26:26 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
10:26:28 PM 1000 3323 138.50 0.00 1572252 322720 4.05 thunderbird
上面我正在查看我的邮件客户端,thunderbird
每 2 秒显示一次 CPU 负载摘要。
答案2
您还可以使用pv
“管道查看器”来监视进程处理和/或输出数据的数量和速度。
在 Debian/Ubuntu 上,您需要安装包裹pv
使用它。
pv a.img.gz | gzip -cd > a.img
将为您提供 的总吞吐量和当前吞吐量gzip
,以及进度条并估计何时gzip
完成输入文件的处理(假设其速度保持不变)。
您还可以监视输出...
gzip -cd a.img.gz | pv > a.img
...或者甚至结合这两个命令并同时监视输入和输出:
pv -cN input a.img.gz | gzip -cd | pv -cN output > a.img
(在这种情况下,您需要pv
的-c
选项来防止两个进度指示器相互覆盖,并-N
为它们指定(任意)名称以了解哪个是哪个。)