"lsof" 명령의 대안?

"lsof" 명령의 대안?

많은 경우에 lsof내가 사용해야 하는 머신에는 설치되어 있지 않지만 lsof그 "성능"은 매우 필요합니다(예: AIX). :\

lsofWindows가 아닌 세계에도 유사한 응용 프로그램이 있습니까?

예를 들어, 어떤 프로세스가 이 디렉터리를 사용하는지 알아야 합니까 /home/username?

답변1

알아요fuser시스템에서 사용할 수 있는지 확인하세요.

답변2

이것유닉스 로제타스톤는 이와 같은 질문에 답할 수 있는 훌륭한 리소스입니다. 몇 가지 대안을 언급합니다.라소프(아래 참조). 그러나 lsof는 해당 기능에 대한 사실상의 표준 응용 프로그램입니다.

특정 파일을 연 프로세스 ID를 찾으려면 다음을 사용할 수 있습니다.fuser모든 POSIX 호환 시스템에서.

디렉토리가 있는 운영 체제에서는 을 전달할 /proc수 있습니다 . 일부 운영 체제에는 다음과 같은 명령이 있습니다.lsof/proc

답변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

관련 정보