이는 다소 관련이 있습니다.명령의 단일 매개변수의 최대 크기를 정의하는 것은 무엇입니까?. 그러나 이것은 쉘 자체와 관련이 있습니다.
명령을 사용하여 최대 크기 또는 문자열 길이를 정의하는 것이 무엇인지 알고 싶습니다 ssh
. 예는 입니다 $ ssh user@remote "echo very big command"
.
추적과 오류로 테스트하기 위해 일부 스크립트를 찾았습니다. 하지만 더 좋은 방법이 있다고 생각합니다. 하지만 먼저 문자열의 최대 길이를 정의하는 것이 무엇인지 이해하고 싶습니다.
다음은 최대 길이에 대한 오류를 발생시키는 방법의 예입니다.
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import Popen
>>> Popen(['ssh', 'user@localhost', 'echo', '{}'.format('T' * 500000)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 7] Argument list too long: 'ssh'
내 시스템(ARM64hf의 Debian 11)의 제한은 131067
문자( start 제외)로 시작 ssh
합니다 echo
. 그러나 getconf ARG_MAX
훨씬 더 높습니다 2097152
.