Java関数moveFileは、native moveコマンドを使用して出力レポートファイルを準備ディレクトリに移動します。以前はうまくいきましたが、現在は以下のディスクスペースの例外を投げ始めました。しかし、私がディスクスペースをチェックすると、ディレクトリ内にたくさんのsaceがあり、私もクリーンアップしました。私はそれを再実行しようとしましたが、私はまだ以下のエラーが表示されます。問題が何であるか分かりません。native moveコマンド - java関数
java.io.IOException: Cannot run program "mv": error=12, Not enough space
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at powertel.usageExtract.ctfCompactExtract.moveFile(ctfCompactExtract.java:507)
at powertel.usageExtract.ctfCompactExtract.run(ctfCompactExtract.java:1189)
Caused by: java.io.IOException: error=12, Not enough space
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
プライベートINT MOVEFILE(INTのmoveTo){
ストリングRUNCMD = ""; プロセスp = null; int extVal = 0;プロセスを実行するためにフォークしようとしたとき
if (moveto == 1) {
runCmd = "mv "+ outfile + " " + localbaseDir+"/ctf/ready/";
}
else {
runCmd = "mv "+ outfile + " " + localbaseDir+"/ctf/error/";
}
try {
Runtime r = Runtime.getRuntime();
p = r.exec(runCmd);
p.waitFor();
extVal = p.exitValue();
log.debug("Process exit value: " + extVal);
}
catch (IOException e) {
extVal = 1;
log.error("IO Exception - "+ e.getMessage());
e.printStackTrace();
}
catch (InterruptedException e1) {
extVal = 1;
log.error("Interrupted Exception - "+e1.getMessage());
}
return extVal;
}
マシンのulimitの設定があり、わからないことは、場合に役立ちます。ファイルサイズは? また、ファイルパスセパレータを宣言するシステムプロパティは非常に便利です。そのことを考慮する必要があります。 – r0ast3d
outfileとlocalbaseDirは同じファイルシステム(マウントポイント)にありますか? –
準備完了、エラーディレクトリは同じnfsファイルシステムにあります。出力ディレクトリは環境変数$ CUSTOM_OUTに定義されています。これは/ nan/outディレクトリに設定されています。 Javaプログラムでは、それは検索され、outfile public変数に格納されます。 CUSTOM_OUT変数を別のファイルシステム上のホームディレクトリに変更し、必要なディレクトリを作成して実行しましたが、同じエラーが発生しています。 – Arav