파일 열기를 방지할 수 있나요? [폐쇄]

파일 열기를 방지할 수 있나요? [폐쇄]

삭제된 파일을 캡처하기 위해 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가 잘못한 결과가 아니라 애플리케이션에 내재된 현상입니다.

관련 정보