La lista de argumentos es demasiado larga "resumen de la solución de errores

  

Cuando Linux intenta pasar demasiados parámetros a un comando del sistema (ls *; cp *; rm *; cat *; etc …), aparecerá" Lista de argumentos " Demasiado tiempo "" error. Este artículo proporcionará 4 soluciones, ordenadas de baja a alta según la complejidad.

Método # 1: Divida manualmente los parámetros de la línea de comando en partes más pequeñas

Ejemplo 1mv [al] * ../directory2

mv [mz] * ../directory2

Este es el más fácil de los 4 métodos, pero está lejos de ser el ideal. Debes tener una forma. El archivo dividido promedio, y para el caso de una gran cantidad de archivos, debe ingresar el comando N-pass.

Método # 2: use el comando find

Ejemplo 2 Método 2 Use el comando find para filtrar la lista de archivos, Los archivos necesarios se pasan a una serie de comandos.

La ventaja es que el comando buscar tiene una función de filtrado muy poderosa y, quizás lo más importante, este método solo requiere una línea de comandos.

Único La desventaja es que el Método 2 necesita atravesar el archivo, por lo que lleva mucho tiempo.

Método # 3: Crear función

Ejemplo3

#! /Bin /bash

# configuración La carpeta que se eliminará RM_DIR = '/data /files'

cd $ RM_DIRfor I en `ls`dorm -f $ Idone

Método # 4: Recompile el kernel de Linux

El último método requiere 2 palabras: cauteloso, este método es muy avanzado, por lo que los usuarios de Linux que no tienen experiencia no deben intentarlo. Además, antes del uso permanente, asegúrese de realizar una prueba completa en el entorno del sistema.
Método

4 Solo necesita aumentar manualmente el número de páginas asignadas a los parámetros de la línea de comando en el kernel. Abra el archivo include /linux /binfmts.h y tenga las siguientes líneas cerca del principio del archivo:

/*

* MAX_ARG_PAGES define el número de páginas asignadas para los argumentos

* y el sobre para el nuevo programa. 32 debería ser suficiente, esto le da a

* un máximo de env + arg de 128kB w /4KB páginas.

* /

#define MAX_ARG_PAGES 32

Para aumentar la memoria de los parámetros de la línea de comando de la línea de asignación, solo necesita asignar un valor mayor a MAX_ARG_PAGES, guardar, recompilar, Instalar, reiniciar, obtener

En mi sistema, aumenté el valor de MAX_ARG_PAGES a 64, lo que resolvió todos los problemas. Después de cambiar este valor, no he encontrado ningún problema. Esto es comprensible. Cuando MAX_ARG_PAGES se cambia a 64, la línea de parámetros más larga ocupa solo 256 KB de memoria del sistema, no es nada para el estándar de hardware actual.

Las ventajas del Método 4 son obvias, ahora solo tienes que ejecutar el comando como de costumbre. La desventaja también es obvia. Si la memoria asignada a la línea de comandos es más grande que la memoria disponible del sistema, puede causar un ataque DoS en el propio sistema, lo que causa que el sistema se bloquee. Especialmente para sistemas multiusuario, incluso un pequeño aumento en la asignación de memoria puede tener un gran impacto porque a cada usuario se le asigna memoria adicional. Así que asegúrese de probarlo a fondo para determinar si su sistema puede usar el Método 4.

Copyright © Conocimiento de Windows All Rights Reserved