即使命令是 interrupted/canceled,bzip2 是否会创建输出文件?
Does bzip2 creates an output file even if the command was interrupted/canceled while in progress?
我通过 SSH 登录到远程机器并使用以下方法压缩了一个 90GB XML 文件:
bzip2 myfile.xml
我的连接超时,所以我不确定 bzip2 是否有效,但我最终得到了一个输出文件 myfile.xml.bz2.
当 bzip2 命令无法完全执行时,是否保存输出文件?
一个更合适的问题是它是否会自行清理。
BZip2 将数据压缩成相对较小的块,并在进入下一个块之前输出每个块。这个 allows it to run 在 memory-constrained 系统上仍然处理实际数量的数据(它需要不到 8MB 的 RAM 来处理你的 90 GB XML)。
如果您检查源文件 bzip2.c
,您会注意到它确实在函数 void cleanUpAndFail(Int32 ec)
中进行了清理,假设输入文件仍然存在。当然,如果程序在 运行 完成之前被杀死,它就无法做到这一点。
在你的情况下,如果 myfile.xml
仍然存在并且你没有明确告诉 bzip2 保留它(似乎你没有),那么 bzip2
可能在完成之前被杀死。如果它消失了,那么它很可能完成而没有问题。您可以使用 bzip2 -tv
到 运行 对其进行完整性测试。
我通过 SSH 登录到远程机器并使用以下方法压缩了一个 90GB XML 文件:
bzip2 myfile.xml
我的连接超时,所以我不确定 bzip2 是否有效,但我最终得到了一个输出文件 myfile.xml.bz2.
当 bzip2 命令无法完全执行时,是否保存输出文件?
一个更合适的问题是它是否会自行清理。
BZip2 将数据压缩成相对较小的块,并在进入下一个块之前输出每个块。这个 allows it to run 在 memory-constrained 系统上仍然处理实际数量的数据(它需要不到 8MB 的 RAM 来处理你的 90 GB XML)。
如果您检查源文件 bzip2.c
,您会注意到它确实在函数 void cleanUpAndFail(Int32 ec)
中进行了清理,假设输入文件仍然存在。当然,如果程序在 运行 完成之前被杀死,它就无法做到这一点。
在你的情况下,如果 myfile.xml
仍然存在并且你没有明确告诉 bzip2 保留它(似乎你没有),那么 bzip2
可能在完成之前被杀死。如果它消失了,那么它很可能完成而没有问题。您可以使用 bzip2 -tv
到 运行 对其进行完整性测试。