![프로세스에 파일이 열려 있으면 lsof가 조치를 취하도록 하고 이상적으로는 이 작업을 반복적으로 수행합니다.](https://linux55.com/image/229145/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%97%90%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%97%B4%EB%A0%A4%20%EC%9E%88%EC%9C%BC%EB%A9%B4%20lsof%EA%B0%80%20%EC%A1%B0%EC%B9%98%EB%A5%BC%20%EC%B7%A8%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EA%B3%A0%20%EC%9D%B4%EC%83%81%EC%A0%81%EC%9C%BC%EB%A1%9C%EB%8A%94%20%EC%9D%B4%20%EC%9E%91%EC%97%85%EC%9D%84%20%EB%B0%98%EB%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
예제 섹션에 따르면lsof(8) 매뉴얼 페이지 manpages.ubuntu.com에서 프로세스에 파일이 열려 있으면 명령을 실행하거나 작업을 수행할 수 있어야 합니다.
프로세스가 열려 있을 때만 조치를 취하려면 다음을
/u/abe/foo
사용하십시오.lsof /u/abe/foo echo "still in use"
이 구문을 반복 모드에서 시도하면 작동하지 않습니다.
$ lsof -r /u/abe/foo tput bel
lsof: status error on tput: No such file or directory
lsof: status error on bel: No such file or directory
=======
매뉴얼 페이지를 보았지만 꽤 길어서 뭔가 간과하고 있는 것 같습니다.
내가 무엇을 놓치고 있나요?
답변1
맨페이지에 나열되어 있지만 이는 유효한 호출이 아닙니다 lsof
. lsof
고려 사항은 다음 echo
과 still in use
같습니다.
lsof /u/abe/foo echo "still in use"
결과를 얻고 lsof
그에 따라 조치를 취하려면 종료 코드를 사용할 수 있습니다. 존재하다 bash
:
lsof filename && echo "still in use"
또는:
lsof filename || echo "not in use"
이 작업이 반복적으로 발생하도록 하려면 위 코드를 루프에 넣거나 lsof
반복 패턴에 넣은 다음 표준 출력을 처리 할 수 있습니다 bash
. 예를 들면 다음과 같습니다.
lsof -t -r2 filename |
grep --line-buffered -v '=======' |
while read pid
do
echo Process $pid is using the file
done