많은 경우 "lsof"는 내가 작업해야하는 머신에 설치되지 않지만 lsof의 "기능"은 매우 필요합니다 (예 : AIX). : \
Windows 이외의 응용 프로그램에 "lsof"와 같은 응용 프로그램이 있습니까?
업데이트 : 예 : "/ home / username"디렉토리를 사용하는 프로세스가 무엇인지 알아야합니까?
많은 경우 "lsof"는 내가 작업해야하는 머신에 설치되지 않지만 lsof의 "기능"은 매우 필요합니다 (예 : AIX). : \
Windows 이외의 응용 프로그램에 "lsof"와 같은 응용 프로그램이 있습니까?
업데이트 : 예 : "/ home / username"디렉토리를 사용하는 프로세스가 무엇인지 알아야합니까?
답변:
알고 fuser
있습니다. 시스템에서 사용할 수 있는지 확인하십시오.
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | less
은에 마운트 된 파일 시스템에서 열린 파일이있는 모든 프로세스를 표시 할 수 있습니다 /
. 특정 도움말은 맨 페이지를 참조하십시오.
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | while read user pid flags rest; do printf '%10s %10s %10s %s\n' $user $pid $flags "$(</proc/$pid/cmdline)"; done | less
유닉스 로제타 스톤은 질문에 이런 종류의 좋은 자원이다. lsof에 대한 몇 가지 대안을 언급합니다 (아래 참조). 그러나 lsof는 실제로 수행하는 작업의 표준 응용 프로그램입니다.
원하는 것이 특정 파일이 열려있는 프로세스 ID를 찾는 것이라면 모든 fuser
POSIX 호환 시스템에서 사용할 수 있습니다 .
/proc
디렉토리 가있는 운영 체제 에서 lsof
의 정보를 통해 프로세스에서 열린 파일 ( 가장 일반적인 작업 모드와 반대)을 쿼리 할 수 있습니다 /proc
. 일부 운영 체제에는 다음과 같은 명령이 있습니다.
procfiles
시스템과 함께 제공됩니다 (AIX 5.2부터). AIX 5.2 성능 도구 업데이트 및 사용법과 lsof, pfiles, procfiles 명령의 예제 도 참조하십시오 .pfiles
( 2.5 이후 존재 )이것은 트릭을해야합니다. 다음을 제외한 모든 파일 설명자 매핑을 제공합니다.
( 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
때때로 lsof
설치/usr/sbin
의 /usr/sbin
일부가 아닌 $PATH
경우 설치된 명령도 놓칠 수 있습니다.
로 확인
whereis lsof
lsof: /usr/sbin/lsof /usr/share/man/man8/lsof.8.gz