![매개변수 목록이 너무 깁니다. Linux redhat의 경우 /bin/sh](https://linux55.com/image/118558/%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%EB%AA%A9%EB%A1%9D%EC%9D%B4%20%EB%84%88%EB%AC%B4%20%EA%B9%81%EB%8B%88%EB%8B%A4.%20Linux%20redhat%EC%9D%98%20%EA%B2%BD%EC%9A%B0%20%2Fbin%2Fsh.png)
다음과 같이 실행하는 데 사용하는 test.sh라는 스크립트가 있는데 훌륭하게 작동합니다.
/root/test.sh
그런 다음 아래와 같이 경고와 함께 shc 컴파일러를 사용하여 이 스크립트를 컴파일하려고 했습니다.
shc -v -r -T -f test.sh
shc: WARNING!!
Scripts of length near to (or higher than) the current System limit on
"maximum size of arguments to EXEC", could comprise its binary execution.
In the current System the call sysconf(_SC_ARG_MAX) returns -1 bytes
and your script "test.sh" is 155201 bytes length.
shc shll=sh
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc test.sh.x.c -o test.sh.x
shc: strip test.sh.x
shc: chmod go-r test.sh.x
다음 경고 때문에 이 컴파일된 파일을 실행할 수 없습니다.
./test.sh.x
./test.sh.x: Argument list too long: /bin/sh
스크립트를 컴파일할 수 있도록 _SC_ARG_MAX 제한을 어떻게 늘릴 수 있습니까?
답변1
사용 중인 프로그램이 _SC_ARG_MAX
이를 올바르게 읽고 으로 보고 할 수 없습니다 -1
.
즉, 이 값을 높이려고 해도(시스템 헤더를 수정하고 최소한 커널과 일부 유틸리티를 다시 컴파일해야 함)아직올바른 값을 읽지 못했습니다.
메시지는 경고이므로 치명적이지 않습니다. 유틸리티가 수행하는 모든 작업은 정상일 가능성이 높습니다.
시스템 구성 변수 ARG_MAX
(기호 상수가 있는 값 _SC_ARG_MAX
)는 Ubuntu에서는 2097152, OpenBSD에서는 262144( )의 값을 갖습니다 getconf ARG_MAX
. 귀하의 값 155201이 바로 거기에 있습니다.
그 값이 무엇인지 확인하기 위해 RedHat 시스템에 액세스할 수 없습니다.