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.