linux gunzip解压缩命令执行后文件仍然是压缩文件

再shell脚本中将zip压缩文件解压,文件后缀名为.gz,解压命令为gunzip test.gz,打印shell日志,发现gunzip test.gz命令确实被打印,也就是说业务逻辑正常,打印$?,结果为0,尝试在gunzip test.gz前后添加sleep 5s命令,压缩文件仍然没有被解压,但是这个问题是偶发的,不做任何修改,删除test.gz并重新下载后,再执行shell却正常执行。

mv ${locDir}${locFileName} ${locDir}${locFileName}.gz

echo $(ls ${locDir})

echo "gunzip ${locDir}${locFileName}.gz"

sleep 5s

gunzip ${locDir}${locFileName}.gz

echo $?

为什么要多一步命名的操作呢? 你是用什么压缩的,你是不是已经解开了,露出的只是tar归档格式的文件。

[root@maple-c8-n1 ~]# gzip halt-auto-boot.iso -c > testgz
[root@maple-c8-n1 ~]# file testgz 
testgz: gzip compressed data, was "halt-auto-boot.iso", last modified: Thu Jun 10 12:12:21 2021, from Unix, original size 4740200
[root@maple-c8-n1 ~]# bash test.sh 
halt-auto-boot.iso testgz.gz test.sh
gunzip /root/testgz.gz
0
[root@maple-c8-n1 ~]# file testgz 
testgz: ISO 9660 CD-ROM filesystem data 'CentOS 8.3 x86_64 boot' (bootable)
[root@maple-c8-n1 ~]# cat test.sh 
#!/bin/bash
locDir=/root/
locFileName=testgz
mv ${locDir}${locFileName} ${locDir}${locFileName}.gz

echo $(ls ${locDir})

echo "gunzip ${locDir}${locFileName}.gz"

gunzip ${locDir}${locFileName}.gz

echo $?

我的没问题呢

 

我觉得你的命令没问题,可能是文件过大或者服务器资源,比如CPU占用过高等,造成你执行解压命令之后要等待:

你可以看下这个解压加速:

Linux 加快解压速度,使用 pigz 并行加速 Linux 压缩与解压: https://blog.csdn.net/weixin_39890543/article/details/116959969

每次是吧我都会把echo的内容放在linux终端中执行,但是只要是写进shell脚本里就有可能执行失败

echo "gunzip ${locDir}${locFileName}.gz"