拆分失败,没有错误



如何使用Linux命令split将一个zip文件拆分为多个较小的zip文件?

我有一个大的zip档案,其中包含一个包含数百万行的文件,我需要处理这些行。幸运的是,处理可以并行完成,所以我想将zip分成N个部分,以提供给在几台机器上运行的处理器。

我目前正在使用这个命令将一个巨大的zip档案拆分为10个较小的zip档案:

gunzip -c original.zip | split -l 10 - 'smaller-part-' --additional-suffix='.txt' --filter='gzip >> $FILE.zip'

在我运行Ubuntu16的本地主机上,它运行得很好。然而,在另一台运行Ubuntu16的服务器上,这个命令神秘地失败了,并出现了错误:

split: with FILE=smaller-part-aa.txt, exit 1 from command: gzip >> $FILE.zip

为什么它会以错误代码退出?即使我指定了--verbose,它也没有提供进一步的解释。

编辑:问题似乎与运行命令的用户有关。在抛出错误的服务器上,我在像sudo -u buildbot bash一样启动的shell中以自定义buildbot用户的身份运行它。但是,所有文件和目录都归该用户所有。当我以默认ubuntu用户的身份运行该命令时,它会正确运行。为什么在作为自定义用户运行时会出现gunzip/split/gzip错误?

问题是我的用户为其SHELL环境变量设置了/bin/false,这导致split的--filter参数失败,因为它需要一个有效的shell来执行filter命令。使用vipw将其更改为/bin/bash修复了它。

相关内容

  • 没有找到相关文章

最新更新