Linux에서 파일을 사용하는 프로세스를 어떻게 알 수 있습니까?


92

을 사용하여 Linux에서 파일을 제거하려고했지만 rm -rf file_name오류가 발생했습니다.

rm: file_name not removed.  Text file busy

이 파일을 사용하는 프로세스를 어떻게 알 수 있습니까?

답변:


137

다음 fuser과 같은 명령을 사용할 수 있습니다 .

fuser file_name

파일을 사용하는 프로세스 목록을 받게됩니다.

더 자세한 출력을 받기 위해 다른 플래그를 사용할 수 있습니다.

퓨저의 Wikipedia 기사 또는 다음에서 자세한 정보를 찾을 수 있습니다 .man 페이지 .


나는 이것을 시도했다 : fuser -i / home / bin / lib. 퓨저 : :하지만이있어 잘못된 옵션을 - I / 홈 / 빈 / lib 디렉토리 : 27,674t이
khris

1
@khris fuser는 모든 구현이 동일 하지 않거나 동일한 방식으로 작동 하지 않을 수 있습니다 . -iPOSIX에 정의되어 있더라도 사용중인 특정 구현에 Wikipedia 기사에 설명 된 옵션과 반드시 ​​동일한 옵션이있는 것은 아닙니다. 예를 들어, 저는 지금 AIX를 사용하고 있으며이 fuser시스템 에서 사용 가능한 -i옵션도 없습니다.
jimm-cl

어떤 이유로 든 가상 상자 게스트에서 나를 위해 일하지도 fuser않았습니다 lsof. 이 대답 은 나를 구했습니다.
kael

34

@jim의 대답이 맞습니다- fuser당신이 원하는 것입니다.

추가로 (또는 대안으로) lsof프로세스를 종료하기위한 권한 (추가 명령을 실행할 필요없이)이 필요한 경우 사용자 이름을 포함한 추가 정보를 얻기 위해 를 사용할 수 있습니다 . (물론 프로세스를 죽이는 것이 당신이 원하는 것이라면, fuser-k옵션으로 그렇게 할 수 있습니다. 당신은 옵션 fuser과 함께 다른 신호를 사용할 수 있습니다 -s-자세한 내용은 man 페이지를 확인하십시오.)

예를 들어, tail -F /etc/passwd하나의 창에서 실행중인 경우 :

ghoti@pc:~$ lsof | grep passwd
tail      12470    ghoti    3r      REG  251,0     2037 51515911 /etc/passwd

lsof특정 소켓을 사용하는 프로세스를 찾는 데 사용할 수도 있습니다 . 당신의 무기고에있는 훌륭한 도구입니다.


PID는 어느 필드입니까?
nmz787

@ nmz787- lsof | head -1모든 헤더를 확인합니다.
ghoti

@ nmz787 두 번째 필드는 PID입니다.
forthe

lsof | grep -E "PID|<your_process_name>"첫 번째 줄과 쿼리하려는 프로세스를 모두 표시합니다.
Robin Hsu

0
$ lsof | tree MyFold

첨부 된 이미지에 표시된대로 :

여기에 이미지 설명 입력


1
어떻게 작동합니까? 합니까는 treestdin에서 아무것도 읽어? 그렇다면 해당 입력으로 무엇을합니까?
dyp

man lsof – lsof 명령에 대한 매뉴얼을 표시하고, lsof – 열린 파일을 나열하고, 프로세스에 의해 열린 파일에 대한 정보를 표준 출력 파일에 나열하고 결과를 트리 구조로 볼 수 있습니다. lsof가 무엇인지 명확하게 확인해야합니다
Blunt Notion

내 질문은에 관한 tree것이지 lsof. 내가 이해하는 tree한 표준 입력에서 읽지 않으므로을 실행할 때 의 출력 lsof삭제 됩니다 lsof | tree .... 맞습니다 경우 lsof | tree MyFold와 동일 tree MyFold단지 파일이 어떤 프로세스에 의해 열려있는 내용이 아닌을 표시하는.
dyp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.