많은 경우에 lsof
내가 사용해야 하는 머신에는 설치되어 있지 않지만 lsof
그 "성능"은 매우 필요합니다(예: AIX). :\
lsof
Windows가 아닌 세계에도 유사한 응용 프로그램이 있습니까?
예를 들어, 어떤 프로세스가 이 디렉터리를 사용하는지 알아야 합니까 /home/username
?
답변1
알아요fuser
시스템에서 사용할 수 있는지 확인하세요.
답변2
이것유닉스 로제타스톤는 이와 같은 질문에 답할 수 있는 훌륭한 리소스입니다. 몇 가지 대안을 언급합니다.라소프(아래 참조). 그러나 lsof는 해당 기능에 대한 사실상의 표준 응용 프로그램입니다.
특정 파일을 연 프로세스 ID를 찾으려면 다음을 사용할 수 있습니다.fuser
모든 POSIX 호환 시스템에서.
디렉토리가 있는 운영 체제에서는 을 전달할 /proc
수 있습니다 . 일부 운영 체제에는 다음과 같은 명령이 있습니다.lsof
/proc
- 체계:
procfiles
시스템과 함께 제공됩니다(AIX 5.2부터 시작). 당신은 또한 볼 수 있습니다AIX 5.2 성능 도구 업데이트그리고lsof, pfiles, procfiles 명령의 사용법 및 예. - 솔라리스:
pfiles
(기존의2.5부터 시작).
답변3
Solaris를 실행 중이 lsof
라면 pfiles
.
예를 들어:
pfiles /proc/*
답변4
이것은 트릭을 수행해야합니다. 다음을 제외한 모든 파일 설명자 매핑을 제공합니다.
- 볼 수 있는 권한이 없거나
- "Permission Denied" 문자열이 포함된 파일에 적용됩니다.
( find /proc -mindepth 1 -maxdepth 1 \
| grep -E [0-9]+ | xargs -n 1 -I% find %/fd \
| xargs ls -l \
| grep -v "Permission denied" ) 2>/dev/null \
| cut -d' ' -f12- | less
특정 프로그램에 대한 매핑에만 관심이 있다는 것을 이미 알고 있다면 다음과 같은 것을 더 사용할 수 있습니다.
exec=sshd
pgrep "$exec" | xargs -n 1 ps -p
pgrep "$exec" | xargs -n 1 -I% find /proc/%/fd | xargs ls -l | cut -d' ' -f12- | less