본문 바로가기
서버/리눅스

[Linux] File Descriptor란?

by 코딩히어로 2022. 2. 11.
728x90

리눅스에서는 모든 게 파일로 이루어진다고 하는데 그중에서 파일 디스크립터는

프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값입니다.

파일 디스크립터의 값은 일반적으로는 0이 아닌 정수 값으로 표현됩니다.

 

리눅스에서는 현재 실행중인 프로세스 또한 File Descriptor로 표현되기 때문에

다음과 같은 명령어를 통해서 해당 프로세스가 실행되고 있는 개수를 확인할 수 있습니다.

 

ls /proc/프로세스ID(PID)/fd/ | wc -l

 

프로세스가 실행할 수 있는 개수는 리눅스에서 제한을 두고 있는데

이유는 하나의 프로세스에만 자원을 할당할 수 없기 때문입니다.

먼저 시스템상에 File Descriptor의 한계는 Soft limit과 Hard limit으로 구분됩니다.

 

ulimit -aS		// Soft limit 확인
ulimit -aH		// Hard limit 확인

 

해당 값은 limits.conf 파일 제일 하단에서 수정이 가능합니다.

 

vim /etc/security/limits.conf

 

마지막으로 일반유저가 1개의 세션에서 열 수 있는 파일의 개수는

다음 명령을 통해서 확인이 가능합니다.

 

cat /proc/sys/fs/file-max

 

소켓통신을 이용한 서버를 운영하는 관리자의 경우에는 이 file descriptor가

정말 중요한데 그 이유는 file descriptor가 max를 넘어가면 더 이상의 소켓이 열리지도

않을 뿐만 아니라 전체 시스템상에서 문제가 발생할 수 있기 때문입니다.

 

항상 file descriptor는 타이트한것보다 사용하는 범위보다 훨씬

너프 하게 설정해서 사용하는 것을 추천드립니다.

728x90
반응형

'서버 > 리눅스' 카테고리의 다른 글

[Linux] 압축 tar 명령어  (4) 2022.03.31
[Linux] 파일 전송 scp 명령  (4) 2022.03.31
[Linux] 방화벽 Firewall  (8) 2022.02.08
[Linux] 원격 SSH 접속 Putty  (2) 2022.01.12
[Linux] 프로세스란?  (21) 2022.01.11

댓글