使用Runtime的exec()方法运行以下命令,使用Java生成目录的tar文件。
我手动运行了tar命令以处理输入目录,它完美地工作了。有什么指点呢?
更新: 对于以下目录结构:
tar -zcvf dest.tar.gz -C dirTotar .
创建tar文件的Java代码
String command = "tar -zcvf dest.tar.gz -C dirTotar .";
Process process = Runtime.getRuntime().exec(command);
process.waitFor()
return process.exitValue();
Java进程是一个服务器,它在每个输入处理后创建tar文件。在处理了一些输入后,该过程在tar步骤处卡住了。
运行strace -p
查找进程是否被卡住,并显示以下输出:
strace -p 6782
Process 6782 attached - interrupt to quit
write(1, "./file"..., 66
我手动运行了tar命令以处理输入目录,它完美地工作了。有什么指点呢?
更新: 对于以下目录结构:
/tmp/dir1
/tmp/dir2
/tmp/dir3
.
.
正在生成tar文件的目录是dir1。还有其他进程在为dir2、dir3等目录生成tar文件。
当生成dir1的tar文件的进程被卡住时,试图对其他目录(如dir2、dir3)进行tar的其中一个进程也会被卡住。这可能是问题的原因吗?
-x
是指“提取”。 - Gyro Gearless