을 사용하여 Linux에서 파일을 제거하려고했지만 rm -rf file_name
오류가 발생했습니다.
rm: file_name not removed. Text file busy
이 파일을 사용하는 프로세스를 어떻게 알 수 있습니까?
답변:
다음 fuser
과 같은 명령을 사용할 수 있습니다 .
fuser file_name
파일을 사용하는 프로세스 목록을 받게됩니다.
더 자세한 출력을 받기 위해 다른 플래그를 사용할 수 있습니다.
퓨저의 Wikipedia 기사 또는 다음에서 자세한 정보를 찾을 수 있습니다 .man
페이지 .
fuser
는 모든 구현이 동일 하지 않거나 동일한 방식으로 작동 하지 않을 수 있습니다 . -i
POSIX에 정의되어 있더라도 사용중인 특정 구현에 Wikipedia 기사에 설명 된 옵션과 반드시 동일한 옵션이있는 것은 아닙니다. 예를 들어, 저는 지금 AIX를 사용하고 있으며이 fuser
시스템 에서 사용 가능한 -i
옵션도 없습니다.
@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
특정 소켓을 사용하는 프로세스를 찾는 데 사용할 수도 있습니다 . 당신의 무기고에있는 훌륭한 도구입니다.
lsof | head -1
모든 헤더를 확인합니다.
lsof | grep -E "PID|<your_process_name>"
첫 번째 줄과 쿼리하려는 프로세스를 모두 표시합니다.
tree
stdin에서 아무것도 읽어? 그렇다면 해당 입력으로 무엇을합니까?
tree
것이지 lsof
. 내가 이해하는 tree
한 표준 입력에서 읽지 않으므로을 실행할 때 의 출력 lsof
이 삭제 됩니다 lsof | tree ...
. 맞습니다 경우 lsof | tree MyFold
와 동일 tree MyFold
단지 파일이 어떤 프로세스에 의해 열려있는 내용이 아닌을 표시하는.