프로세스에 파일이 열려 있으면 lsof가 조치를 취하도록 하고 이상적으로는 이 작업을 반복적으로 수행합니다.

프로세스에 파일이 열려 있으면 lsof가 조치를 취하도록 하고 이상적으로는 이 작업을 반복적으로 수행합니다.

예제 섹션에 따르면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고려 사항은 다음 echostill 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

관련 정보