Linux에서 열린 파일을 확인하는 방법

How Check Open Files Linux



Linux에서는 모든 것이 파일이라는 말을 들어보셨을 것입니다. 이것이 완전히 사실은 아니지만 일련의 진실을 담고 있습니다.

Linux 및 Unix 계열 시스템에서는 모든 것이 파일과 같습니다. 즉, Unix 시스템의 리소스에는 저장 장치, 네트워크 소켓, 프로세스 등을 포함하여 파일 설명자가 할당됩니다.







파일 설명자는 파일 및 기타 입출력 장치를 식별하는 고유 번호입니다. 리소스와 커널이 리소스에 액세스하는 방법을 설명합니다. 커널 추상화 하드웨어 리소스에 대한 게이트웨이로 생각하십시오.



불행히도 파일 디스크립터의 개념은 이 튜토리얼의 범위를 벗어납니다. 자세한 내용을 시작하려면 아래에 제공된 링크를 고려하십시오.



https://en.wikipedia.org/wiki/File_descriptor





이는 Linux와 같은 Unix 및 Unix 계열 시스템이 이러한 파일을 많이 사용한다는 것을 의미합니다. Linux 고급 사용자로서 열려 있는 파일과 이를 사용하는 프로세스 및 사용자를 보는 것은 매우 유용합니다.

이 튜토리얼은 열려 있는 파일을 보는 방법과 어떤 프로세스 또는 사용자가 담당하는지에 초점을 맞출 것입니다.



전제 조건

시작하기 전에 다음 사항을 확인하십시오.

  • 리눅스 시스템
  • 루트 또는 sudo 권한이 있는 사용자

이것들이 있다면 시작합시다:

LSOF 유틸리티

Victor A Abell이 만든 List 열린 파일 또는 줄여서 lsof는 열린 파일과 파일을 연 프로세스 또는 사용자를 볼 수 있는 명령줄 유틸리티입니다.

lsof 유틸리티는 주요 Linux 배포판에서 사용할 수 있습니다. 그러나 설치되지 않았으므로 수동으로 설치해야 할 수도 있습니다.

Debian/Ubuntu에 lsof를 설치하는 방법

Debian에 설치하려면 다음 명령을 사용하십시오.

수도 apt-get 업데이트

수도 apt-get 설치이소프-그리고

REHL/CentOS에 설치하는 방법

REHL 및 CentOS에 설치하려면 다음 명령을 사용하십시오.

수도dnf 업데이트

수도dnf설치이소프

아치에 설치하는 방법

Arch에서 다음 명령을 사용하여 패키지 관리자를 호출합니다.

수도팩맨-그의

수도팩맨-NS이소프

Fedora에 설치하는 방법

Fedora에서 다음 명령을 사용합니다.

수도 얌 설치이소프

lsof 유틸리티를 설치하고 업데이트하면 사용을 시작할 수 있습니다.

기본 lsof 사용법

lsof 도구를 사용하려면 다음 명령을 입력하십시오.

수도이소프

위의 명령을 실행하면 lsof는 아래와 같이 많은 정보를 덤프합니다.

위의 출력은 프로세스에서 연 모든 파일을 보여줍니다. 출력에는 파일에 대한 특정 정보를 나타내는 다양한 열이 있습니다.

  • 명령 열 – 파일을 사용하는 프로세스의 이름을 표시합니다.
  • PID – 파일을 사용하는 프로세스의 프로세스 식별자를 보여줍니다.
  • TID – 프로세스의 작업 ID(스레드)를 표시합니다.
  • 태스크CMD – 작업 명령의 이름을 나타냅니다.
  • 사용자 – 프로세스의 소유자.
  • FD – 파일 설명자 번호를 표시합니다. 이것이 프로세스가 파일을 사용하는 방법입니다. 이 열 출력에서 ​​사용할 수 있는 옵션은 다음과 같습니다.
  • cwd – 현재 작업 디렉토리.
  • 나 나 – 메모리 매핑된 파일
  • PD – 상위 디렉토리
  • jld – 감옥 디렉토리
  • LTX – 공유 라이브러리 텍스트
  • rtd - 루트 디렉토리.
  • txt – 프로그램 코드 및 데이터
  • NS – 커널 추적 파일.
  • 오류 – 파일 기술자 정보 오류
  • mmp – 메모리 매핑된 장치.
  • 유형 – 다음과 같이 파일과 관련된 노드 유형을 표시합니다.
  • 유닉스 – Unix 도메인 소켓용.
  • 당신에게 – 디렉토리를 나타냅니다.
  • 등록 – 일반 파일을 나타냄
  • CHR – 특수 문자 파일을 나타냅니다.
  • 링크 – 심볼릭 링크 파일
  • 블크 – 특수 파일 차단
  • 아이넷 – 인터넷 도메인 소켓
  • 선입선출 – 명명된 파이프(선입선출 파일)
  • 파이프 – 파이프용

그리고 더 많은.

  • 장치 – 특수문자 파일, 블록특수, 일반, 디렉토리, NFS 파일 순으로 디바이스 번호를 쉼표로 구분하여 보여줍니다.
  • 사이즈/오프 – 파일 pr 파일 오프셋의 크기를 바이트 단위로 표시합니다.
  • 마디 – 로컬 파일의 노드 번호, 인터넷 프로토콜 유형 등을 표시합니다.
  • 이름 – 파일이 위치한 마운트 지점 및 fs의 이름을 표시합니다.

메모: 열에 대한 자세한 내용은 lsof 매뉴얼을 참조하십시오.

파일을 연 프로세스를 표시하는 방법

Lsof는 특정 파일을 연 프로세스만 표시하도록 출력을 필터링하는 데 도움이 되는 옵션을 제공합니다.

예를 들어 /bin/bash 파일을 연 파일을 보려면 다음과 같이 명령을 사용합니다.

수도이소프/오전/세게 때리다

그러면 아래와 같이 출력됩니다.

명령 PID 사용자 FD 유형 장치 크기/오프 노드 이름

ksmtuned1025루트 txt REG253,0 1150704 428303 /usr/오전/세게 때리다

세게 때리다 2968년센토스 txt REG253,0 1150704 428303 /usr/오전/세게 때리다

세게 때리다 3075센토스 txt REG253,0 1150704 428303 /usr/오전/세게 때리다

특정 사용자가 연 파일 표시 방법

특정 사용자가 연 파일을 표시하도록 출력을 필터링할 수도 있습니다. 다음과 같이 사용자 이름이 뒤에 오는 -u 플래그를 사용하여 이 작업을 수행합니다.

수도이소프-유수백

그러면 아래와 같이 출력됩니다.

특정 프로세스에서 연 파일을 표시하는 방법

특정 프로세스에서 연 모든 파일을 보고 싶다고 가정해 봅시다. 이를 위해 프로세스의 PID를 사용하여 출력을 필터링할 수 있습니다.

예를 들어, 아래 명령은 bash에서 연 파일을 보여줍니다.

수도이소프-NS 3075

이렇게 하면 다음과 같이 systemd에서 연 파일만 제공됩니다.

디렉토리에서 열린 파일을 표시하는 방법

특정 디렉토리에서 파일을 열려면 +D 옵션 뒤에 디렉토리 경로를 전달하면 됩니다.

예를 들어, /etc 디렉토리에 열려 있는 파일을 나열합니다.

수도이소프 +D/

다음은 이에 대한 출력입니다.

네트워크 연결을 표시하는 방법

Linux의 모든 것이 파일이기 때문에 TCP 파일이나 연결과 같은 네트워크 파일을 얻을 수 있습니다.

다음 명령을 사용할 수 있습니다.

수도이소프-NSTCP

이것은 시스템에서 TCP 연결을 제공합니다.

아래에 표시된 명령을 사용하여 특정 포트로 필터링할 수도 있습니다.

수도이소프-NS:22

그러면 아래와 같이 출력됩니다.

파일을 지속적으로 표시하는 방법

Lsof는 몇 초마다 출력을 반복하는 모드를 제공합니다. 이를 통해 프로세스 또는 사용자가 연 파일을 지속적으로 모니터링할 수 있습니다.

그러나 이 옵션을 사용하려면 프로세스를 수동으로 종료해야 합니다.

예를 들어 아래 명령은 포트 22에서 열린 파일을 지속적으로 모니터링합니다.

수도lsof -r-NS:22

보시다시피, 세 번째 루프에서 lsof는 SSH에서 서버에 대한 설정된 연결을 포착합니다.

결론

Lsof는 매우 유용한 유틸리티입니다. 중요한 파일을 모니터링하고 파일을 여는 사용자 및 프로세스를 모니터링할 수 있습니다. 이것은 문제를 해결하거나 시스템에 대한 악의적인 시도를 찾을 때 매우 유용할 수 있습니다.

이 튜토리얼에서 볼 수 있듯이 다양한 예제와 방법을 사용하여 사용자 지정 모니터링을 위해 lsof 도구에서 제공하는 기능을 결합할 수 있습니다.

읽고 공유해 주셔서 감사합니다! 나는 당신이 새로운 것을 배웠기를 바랍니다!