2017-12-29 13 views
0

CentOS 7을 실행하는 SGE 클러스터에서 많은 작업을 수행하고 최근에는 임의로 죽어가는 작업에 문제가 있었지만 프로세스가 계속 실행 중이므로 처음부터 다시 정리할 수 없습니다. 필요한 파일을 삭제하려고하면 "no such file or directory"라는 메시지가 표시되지만 파일은 ls로 표시됩니다. 공개 토론 수색은 이것이 이름에있는 non-printing 특성 때문에 일 수 있었다는 것을 저에게 말했다, 그러나 나는 접촉을 사용하여 동일한 이름을 가진 파일을 만들거나 rm -i로 그것을 제거 할 수 없다. 예 : 나는 문제가 나쁜 파일이 어떤 프로세스에 의해 유지되고 있음을, 그리고 내가 클러스터를 제기 할 때 그들을주고 있었다 함께했다 유일한 솔루션을 버전 관리자 상당히 확신 등으로파일은 ls로 표시되지만 rm 또는 mv는 알 수없는 프로세스로 보입니다.

[[email protected] testing]$ rm file_bad.csv 
rm: cannot remove ‘file_bad.csv’: No such file or directory 
[[email protected] testing]$ rm -f file_bad.csv 
[[email protected] testing]$ ls file* 
file1.csv file2.csv file_bad.csv 
[[email protected] testing]$ touch file_bad.csv 
touch: cannot touch ‘file_bad.csv’: No such file or directory 
[[email protected] testing]$ rm -i -- file_bad.csv 
rm: cannot remove ‘file_bad.csv’: No such file or directory 
[[email protected] testing]$ ls file* 
file1.csv file2.csv file_bad.csv 

파일 이름을 삭제할 수 있도록합니다. 이것은 지속 가능한 솔루션이 되기에는 너무 빈번하게 발생했습니다. 그래서 문제를 직접 해결하기 위해 할 수있는 일이 있다면 여기에 물어보고 싶습니다. 어떻게 든 파일을 강제로 삭제하고 방법?

대부분의 경우 의심되는 프로세스가 실행중인 클러스터 노드를 알 수 없으며 적절한 프로세스를 찾아 죽일 수있는 방법을 모르는 경우가 많습니다. 로그인 한 노드에서 lsof 명령을 실행해도 아무 것도 나타나지 않습니다.

모든 의견을 보내 주시면 감사하겠습니다.

+0

이름에 보이지 않는 잘못된 문자가있을 가능성이 큽니다. ls -b, -Q, --quoting-style = shell 또는 --quoting-style = shell-always – bmargulies

+0

답장을 보내 주셔서 감사합니다. @bmargulies,하지만 그게 다라고 생각하지 않습니다 : ls -Q 출력은 따옴표 (공백 없음). 또한 "touch file_bad.csv"는 file_bad.csv가 완전한 이름이 아닌 경우 오류를 반환합니다. 그렇습니까? – aknodt

+0

각 파일의 inode 번호를 보려면'ls -i'를 수행하십시오. 그런 다음 find를 사용하십시오. -inum NUMBER -print'를 확인한 후,'find '로 파일을 삭제하십시오. -inum NUMBER -delete' 또는 find. -num NUMBER -exec rm -f {} \; -delete 옵션을 사용할 수없는 경우 -print를 사용하십시오. 그래도 문제가 해결되지 않으면 파일에'fuser'를 사용하여 어떤 프로세스가 있는지 확인하십시오. 최악의 경우 시스템을 다시 시작하십시오. – Nic3500

답변

-1

시도 :

/absolute/path/to/file_bad.csv lsof를 위의 명령 수익률 만약 당신이 사용하는 파일을 유지하기위한 PID의 responsiblr를 찾을 수있는 출력.

아래의 cmd를 사용하여 파일을 제거 할 수도 있습니다.

find/path/to/file -type f -name 'file_bad.csv'-exec rm -f {} \;

+0

이걸로 나는'lsof : status error on /absolute/path/to/file_bad.csv : No such file or directory'를 얻는다. 'find' 명령은 오류가 아니지만 파일은 여전히 ​​존재합니다. – aknodt

+0

파일 이름이 터미널에서 볼 수없는 특수 문자로 구성되어 있다고 생각하기 시작했습니다. "find/path/to/file -type f -name '* ile *'"을 찾아서 찾은 내용을 알려주십시오. – AnythingIsFine

+0

편집 : -name " ile ". 나는 * 보이는 코멘트에 * 입력 할 수 없습니다. – AnythingIsFine