그동안 linux 환경에서 실행되는 application 들을 주로 다루었는데, 최근들어 windows 환경에서 실행되는 application 이 신규 개발되고 있다.
linux 환경에서 실행되는 application에서 제품 안정성 시험을 진행할 때, 다양한 지표(memory, cpu, processing time, restart 여부, 등..)를 통해 제품 이상 여부를 확인하고 있는데, 그 중 FD(File Descriptor) Leak이 없는지를 보는 지표도 포함되어 있다.
linux의 경우 FD 수를 체크하고 FD 목록을 확인하는 방법이 command로 쉽게 가능한데, windows 에서는 경험이 없어서 좀 알아보는 중이다. OS 별로 현재 알고 있는 정보는 아래와 같다.
Windows
(1) 설치
아래 url 에서 sysinternal 제품의 zip 파일을 다운로드 하여 압축을 풀고 적절한 경로에 폴더를 복사하여 사용한다.
https://learn.microsoft.com/ko-kr/sysinternals/downloads/sysinternals-suite
(2) 전체 목록 확인하기
C:\Program Files\SysinternalsSuite>handle.exe
(생략...)
------------------------------------------------------------------------------
ctfmon.exe pid: 15504 DESKTOP-ABC\Administrator
40: File (RW-) C:\Windows\System32
128: File (R-D) C:\Program Files\WindowsApps\Microsoft.LanguageExperiencePackko-KR
330: Section \Sessions\1\BaseNamedObjects\8534
4AC: Section \BaseNamedObjects\__ComCatalogCache__
4B8: Section \BaseNamedObjects\__ComCatalogCache__
5FC: Section \Sessions\1\BaseNamedObjects\CTF.AsmListCache.FMPDefault1
684: Section \Windows\Theme3789119081
74C: Section \Sessions\1\Windows\Theme87216714
------------------------------------------------------------------------------
(생략...)
(3) 특정 app으로 검색하기
C:\Program Files\SysinternalsSuite>handle.exe | findstr /i ctfmon.exe
-> 이 방법은 string 매치로 실행 파일의 PID를 확인하는 방법은 되지만, 상세 FD 목록은 위 (2)번으로 확인하는 방법 외에는 아직 잘 모르겠다..
Linux
(1) process pid 확인하기
$ ps ax | grep '{process name}'
# e.g.
$ ps ax | grep storescp
6141 ? S 0:32 storescp +xa +uf -xs -od /home/blog/recv --aetitle jinakim 10101 -fe .dcm
22361 pts/2 S+ 0:00 grep --color=auto jinakim
-> 위 예시에서 pid = 6141 을 확인
(2) pid로 fd 목록 조회하기
$ls -al /proc/{pid}/fd
# 예시
$ls -al /proc/6141/fd
합계 0
dr-x------ 2 root root 0 11월 14 21:58 .
dr-xr-xr-x 9 root root 0 11월 14 21:58 ..
lrwx------ 1 root root 64 1월 10 14:38 0 -> /dev/pts/0 (deleted)
lrwx------ 1 root root 64 1월 10 14:38 1 -> /dev/pts/0 (deleted)
lrwx------ 1 root root 64 11월 14 21:58 2 -> /dev/pts/0 (deleted)
lrwx------ 1 root root 64 1월 10 14:38 3 -> socket:[66723]
(3) FD 수 검색하기
$ ls -al /proc/{pid}/fd | wc -l
# 예시
$ ls -al /proc/6141/fd | wc -l
7
-> pid 6141 의 fd 수는 7-3 = 4개로 볼 수 있다. (3개를 빼는 이유는 위 (2)번 출력에서 3줄을 제외하기 위함)
'Engineering > OS -Linux, Windows, EXSi' 카테고리의 다른 글
[nvidia-driver] ubuntu에 특정 버전의 nvidia driver 설치하기 (0) | 2024.05.06 |
---|---|
[chattr] 파일 속성 제어하기 (파일 삭제 불가하도록 file lock) (0) | 2024.01.08 |
(linux) dd command - 지정한 크기의 임의의 파일 생성 (0) | 2023.12.18 |
[Mac] Time Machine으로 복원 후, FortiClient app 강제 삭제 후 재설치 (0) | 2023.08.21 |
[Windows] 가상 윈도우 샌드박스(Sandbox) 설치하기 (0) | 2023.07.08 |
댓글