매개변수 목록이 너무 깁니다.

매개변수 목록이 너무 깁니다.

매우 큰 매개변수(크기 1MB)가 포함된 명령을 입력하려고 하는데 "매개변수 목록이 너무 깁니다."라는 메시지가 표시됩니다. 이 논쟁에 어떻게 참여할 수 있습니까?

운영 체제: 리눅스 우분투

답변1

ARG_MAX인수가 커널 제한보다 큰 경우 실행 파일 간에 인수를 전달할 수 없습니다.

당신이 가지고 있다면목록인수가 너무 길어서 더 작은 부분으로 나눌 수 있습니다(예: 를 사용) xargs. 이렇게 하면 가능한 많은 인수를 제공하여 필요한 만큼 명령이 실행됩니다.

구문은 입니다 xargs command <file. 생략하면 command해당 인수가 표시됩니다(예: ) echo.

시범적으로,

xargs -n 4 </etc/motd

처음 4개의 토큰은 한 줄(첫 번째 호출)에 인쇄되고 다음 4개의 토큰은 다른 줄에 인쇄됩니다. (Parameters는 -n최대 인수 개수를 설정하므로 제한은 전혀 사용되지 않습니다 ARG_MAX.)

실행하려는 명령에 원하지 않는 부작용이 있는 경우에는 작동하지 않을 수 있습니다. 예를 들어, command기존 ./a.out파일을 덮어쓰는 경우 작업이 완료되면 마지막 실행 결과가 남게 됩니다.

command명령줄 인수 대신 파일이나 표준 입력을 읽도록 구성하거나 수정할 수 있는 경우 이 제한 사항을 해결할 수 있습니다. 파일이나 스트림은 보다 클 수 있으며 ARG_MAX일반적으로 그렇습니다.

관련 정보