当你运行一段时间autMan后,可能会出现argument list too long的报错,那是你主机系统限制了autMan运行插件的参数长度,导致的报错,如下:
在 Linux 系统中,可以使用getconf ARG_MAX命令来查看当前系统的ARG_MAX参数值。这个值表示命令行参数的最大长度限制,单位是字节。例如,在许多常见的 Linux 发行版中,这个值可能是 2097152 字节左右。 修改ARG_MAX(不推荐用于生产环境) 临时修改(仅对当前会话有效)
ulimit命令可以用来控制 shell 进程的资源限制。虽然ulimit主要用于限制用户对系统资源的使用,但也可以用来设置ARG_MAX相关的参数。在 bash 中,可以使用ulimit -s unlimited(-s选项是用于设置栈大小,间接影响参数长度限制)来尝试放宽参数长度限制。不过这种方法并不一定能完全解决问题,因为它受到多种因素的限制,包括系统的内存和其他安全设置。
sysctl命令用于在内核运行时动态地修改内核参数。对于ARG_MAX,可以尝试修改kernel.argmax参数(注意,这个参数在某些系统中可能不存在或者名称不同)。例如,在一些系统中可以使用sysctl -w kernel.argmax=新的值来修改。但是,这种修改可能会被系统的安全策略(如sysctl配置文件中的securelevel设置等)阻止,并且这种修改是临时的,系统重启后会恢复原状。
这个文件用于设置用户级别的资源限制。可以在这个文件中添加或修改以下类似的行来调整ARG_MAX相关的参数(假设要为用户username修改): username hard stack 一个较大的值(以KB为单位) 这里的stack参数与命令行参数长度限制有关。修改后,当用户username登录系统时,新的限制会生效。不过,这种修改需要用户重新登录才能生效,并且如果设置的值不合理,可能会导致系统资源耗尽或者程序异常。
可以通过修改内核源代码中的相关参数来永久改变ARG_MAX。这是一个非常复杂的过程,需要下载内核源代码,找到定义ARG_MAX的地方(通常在与进程管理和系统调用相关的文件中),修改其值,然后重新编译和安装内核。这种方法风险极高,因为错误的内核编译和安装可能会导致系统无法启动或者出现各种不稳定的情况。所以,除非你是非常有经验的系统管理员或者内核开发者,否则不建议采用这种方法。