CVS linux服务器的项目太多,服务器命令导致;“参数列表太长”;

CVS linux服务器的项目太多,服务器命令导致;“参数列表太长”;,linux,configuration,cvs,Linux,Configuration,Cvs,我有一个CVS服务器,上面有数千个CVS存储库。它以一种典型的配置运行,其中允许匿名pserver访问的项目被添加到cvs命令行,并带有一个--allow root参数。问题是,项目太多,cvs命令现在会导致“参数列表太长”错误 此时,我当前的解决方案是破解CVS源代码,将CVS命令行参数从“--allow root”更改为“--ar”。这是可行的,但我有可能在某个时候再次超过命令行的长度 我使用xargs进行了检查。问题在于,它似乎必须为每个存储库运行CVS命令,每次一个,直到找到传入CVS命

我有一个CVS服务器,上面有数千个CVS存储库。它以一种典型的配置运行,其中允许匿名pserver访问的项目被添加到cvs命令行,并带有一个
--allow root
参数。问题是,项目太多,cvs命令现在会导致
“参数列表太长”
错误

此时,我当前的解决方案是破解CVS源代码,将CVS命令行参数从
“--allow root”
更改为
“--ar”
。这是可行的,但我有可能在某个时候再次超过命令行的长度

我使用
xargs
进行了检查。问题在于,它似乎必须为每个存储库运行CVS命令,每次一个,直到找到传入CVS命令中指定的一个

我尝试编写一个包装器,可以从传入的客户机命令行获取存储库名称,但无法做到这一点。可能只是我缺乏知识,但我尝试了一段时间,没有找到一种有效的方法

我查看了
cvspserver
脚本,但它做了同样的事情,将所有存储库放在命令行中

我查看了cvsd,它也有同样的限制


我真的没有主意了。最优雅的解决方案是cvs包装器,它可以从传入的客户机命令中获取存储库名称。我很想看到这一点,但任何有用的输入都将不胜感激。

在Linux内核>=2.6.23中,这个问题已经解决了。最大参数列表大小增加到最大堆栈大小的25%左右

在我的Linux 64位系统上,默认情况下最大堆栈大小约为8MB,这为参数列表留下了大约2MB的空间。以每个100字节为例,它允许大约20000个程序参数


因为您使用的是2.6.18内核,所以应该考虑更新内核。这应该可以解决这个特定问题,您将获得更新内核的所有额外好处(我想也是麻烦)。

在Linux内核>=2.6.23中,这个问题已经解决了。您是否碰巧使用了较旧的内核,或者确实达到了较新的限制?目前在内核2.6.18(RHEL5.5)上。我想得到一个RHEL6框,我看到是2.6.32。非常感谢。再次感谢。尽管如此,它仍然不是很有效,必须使用如此大的命令行。如果有人有任何关于如何在服务器上为cvs编写包装器的建议,可以从传入的cvs客户端命令中获取指定的存储库,那就太棒了。@lummox:同意,因此在我的回答中是“解决”,而不是“解决”。-)