예제 섹션에 따르면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