본문 바로가기
메모메모

[Linux] 리눅스 서버 내 Argument 길이제한 및 유의사항

by Traby. 2022. 12. 21.

0. 들어가며

 

리눅스 서버 A 에 명령어를 전달하는 리눅스 서버 B위의 Application b가 구동하는 구조의 시스템을 살펴보던 중,

어느날 명령어 실행이 안되는 문제가 발생했다.

통신도 멀쩡하고, 전달도 잘되고, 서버 A에 원격으로 붙어서 명령어를 실행해도 잘되는데 무엇이었을까 살펴보니...

 

1. 리눅스 서버의 Argument는 길이 제한이 있다.

getconf MAX_ARG_STRLEN
getconf PAGE_SIZE

서버의 상위 경로에 정의된 binfmts.h (usr/include/linux/binfmts.h 또는 /include/linux/binfmts.h 등)

내부에는 MAX_ARG_STRLEN 선언해두었다.

이는 PAGE_SIZE *32로 보통 확인되는데, PAGE_SIZE는 리눅스 OS버전에 따라 조금 다를 수 있으나 - 4KB로 통상 예상하면 된다.

따라서 특정 명령어의 Argument 가 128KB를 넘어가면, 해당 명령어를 자동으로 실행시키는 구문은.. 오류를 뱉거나 실행되지 않을 수 있다.

 

 

2. 결론.

자동으로 Argument를 128kb나 쌓아서  전달하는 시스템이 정상적인 시스템설계인가는 잠시 덮어두자.

물론 echo ~~ >> 와 같이 파일 작성하는 경우가 있긴하겠지만.. 끝줄에 추가하는 >> 를 적극 활용하는 것이 타당해보인다.

댓글