我有一个应用程序通过SSH在Linux服务器上执行命令就好了。当我连接到Solaris服务器时,事情不起作用。似乎Solaris命令行限制为267个字符。
有没有办法改变这个?
更新:如前所述,这是Solaris(sh)与Linux(bash)的默认shell的限制。那么,现在的问题是,有没有办法改变sh的限制?
答案 0 :(得分:3)
使用此命令可以看到当前命令长度最大值:
$ getconf ARG_MAX
1048320
我创建了一个可以determine the maximum length of a remote command的脚本。正如克雷格建议的那样,最好的办法是将命令输入标准输入,如果这是一个选项。
答案 1 :(得分:2)
我相信(虽然可能是错误的)与您要连接的默认shell相关。如果您将Solaris上的更改改为您在Linux上使用的同一个shell,那是否可以解决问题?
如果有更好的解决方案,请发表评论,我会在答案中做出改变。
答案 2 :(得分:1)
在我看来,你的选择是:
第一种方法很简单,但需要管理员对每个用户/机器组合进行更改,并可能影响其他程序。从长远来看,更改运行命令的方式将更快,更容易维护。例如,假设您需要执行以下操作:
/usr/bin/foo with a very long list of options and parameters
现在你可能正在做这样的事情:
ssh user@machine "/usr/bin/foo with a very long list of options and parameters"
但你可以改为:
echo "/usr/bin/foo with a very long list of options and parameters" | \
ssh user@machine "/bin/bash"
这将做你想要的。
答案 3 :(得分:1)
只需为用户更改 shell 解释器(编辑 /etc/passwd) 要么 临时运行另一个shell,例如。 korn shell 如下:
serwer%
serwer% echo *
Arguments too long
serwer% ksh
$ echo *
file1
file2
....
file 10000
% exit
serwer%
答案 4 :(得分:0)
当我在Solaris 10上运行configure并且配置脚本出现了命令行长度的数字时,答案通常在256 KB范围内。 Solaris上的标准shell肯定没有300字节以下的限制。
那就是说,我不确定你的问题是什么。我可能会猜测Solaris SSH有一个较短的限制 - 我没有遇到问题,但我倾向于使用SSH作为直接连接(交互式)而不是运行长命令的方式。