ファイルを開くのを防ぐことができますか? [閉鎖]

ファイルを開くのを防ぐことができますか? [閉鎖]

削除されたファイルをキャプチャするためにlsofを実行すると、

私たちは以下を見ます:(はい)

lsof +L1
java      193699  yarn 1760r   REG   8,16      719     0  93696130 /grid/sdb/hadoop/hdfs/data/current/PLP-428352611-43.21.3.46-1502127526112/current/path/nbt/dir37/blk_1186014689_112276769.meta (deleted)

ファイルを削除してもPIDが実行され続けるのはなぜですか?

lsof +L1 | awk '{print $2}' | sort | uniq
193699 

この状況を避けることはできますか?

ベストアンサー1

コメントが長すぎて回答として追加します。

これはこれらのファイルを開いたままにするJavaアプリケーションです。はい、このような状況は避けることができます正しいプログラミングスタイルを使用してオブジェクトを使用すると、次のようになりますObjectOutputStream

//create a Serializable List
List lNucleotide = Arrays.asList(
  "adenine", "cytosine", "guanine", "thymine", "sylicine"
);

//serialize the List
//note the use of abstract base class references

try{
  //use buffering
  OutputStream file = new FileOutputStream("lNucleotide.ser");
  OutputStream buffer = new BufferedOutputStream(file);
  ObjectOutput output = new ObjectOutputStream(buffer);
  try{
output.writeObject(lNucleotide);
  }
  finally{
output.close();
  }
}  
catch(IOException ex){
  logger.log(Level.SEVERE, "Cannot create Silicon life form.", ex);
}

アプリケーションレベルでファイルを閉じるとこの問題を回避します。したがって、これはUnixやLinuxが誤った結果ではなく、アプリケーションに固有の現象です。

おすすめ記事