Cómo generar archivos aleatorios a través de la línea de comandos en sistemas Linux
1. Comando Mkfile en sistemas Unix como Solaris y Mac OS X. , puede generar archivos del tamaño especificado, pero no en Linux.
Ejemplo:
mkfile -n 160g test1
2. Linux puede usar la instrucción dd y /dev/zero es un descriptor de archivo especial, a través del cual Puede devolver un valor nulo.
Ejemplo:
DD if =/dev/zero of = test file count = 1024 bs = 1024
Generar un archivo con count * bs bytes, 1M.
La ventaja de este método para generar archivos aleatorios es que es muy eficiente (generar un archivo 1G tarda aproximadamente 1 segundo) y el tamaño del archivo creado tiene una precisión de bytes.
Hay desventajas.
Utilice caracteres vacíos para completar el contenido del archivo y no habrá filas en las estadísticas del archivo (wc -l test.file es 0).
b. Cuando no necesita preocuparse por el contenido del archivo aleatorio, pero espera que el archivo de prueba tenga líneas estadísticas.
Cambie /dev/zero a /dev/urandom, y /dev/urandom es el generador de números aleatorios en Linux.
La diferencia entre /dev/urandom y /dev/random no se discutirá en detalle aquí. Probablemente el primero no esté limitado por las interrupciones del sistema. Incluso si no hay suficientes interrupciones, puede generar suficientes valores de salida a través de un generador de números aleatorios. Si el segundo se usa en dd, no se puede interrumpir con Ctrl + C; o matar -9. Si el valor de ds es grande, los valores aleatorios generados serán insuficientes y ocuparán mucho tiempo en la CPU. Aunque los números aleatorios generados por /dev/random serán más aleatorios, se recomienda que /dev/urandom sea más eficiente cuando se mezcla con dd.
Desventajas: en comparación con /dev/zero, por supuesto, la eficiencia será menor. Se necesitan unos 10 segundos para generar un archivo de 100 MB. El archivo no tiene contenido legible, lo que es básicamente satisfactorio en circunstancias normales.
Por cierto, dd es una instrucción soportada tanto por Linux como por Unix.
c. Cuando le importa el número de líneas de contenido aleatorio en el archivo, pero no le importa si el contenido se repite.
La idea aquí es encontrar un archivo referenciado (por ejemplo, la línea 2), redirigir ese archivo a un archivo nuevo y luego guardarlo mediante mv, más un bucle for. (n es el número de ciclos y el comportamiento del archivo generado es 2 (n+1))
Ejemplo: supongamos que primero crea un archivo file.txt que contiene dos líneas: Hola y Mundo.
Para {I..n en 1}; archivo cat .txt > archivo 2 .txt & ampmv . > p>
Debido a que es factorial, n = 20 ya es 2 millones de W y la eficiencia caerá drásticamente.
d. Cuando te preocupas por el contenido de archivos aleatorios y no quieres repetir líneas de contenido.
En este caso, no se deben cumplir las instrucciones del sistema, o se puede escribir una larga lista de scripts a través de las instrucciones del sistema operativo, pero esto no es recomendable. Por razones de legibilidad y mantenimiento, debe incorporar un lenguaje de programación Ruby o Python como ayuda.
Pero todavía necesitamos algunas cosas sistemáticas para ayudar.
Idea:
Hay algunas palabras en /usr/share/dict/words, 235886 líneas seguidas, una palabra en cada línea.
Puedes seleccionar algunos de ellos como contenido del documento.
Añade un bucle para satisfacer los requisitos de archivos aleatorios que queramos.
Por ejemplo:
ruby-e ' a = stdin . readlines )]chomp end will b . & gt; file.txt
x es el número de líneas requeridas para el archivo aleatorio, y es el número de líneas de la palabra. Las palabras leídas se pueden leer incluso si se combinan en un solo comando; las palabras se leen repetidamente desde la entrada estándar, se escriben en la tabla B y luego los contenidos se conectan mediante espacios de unión y se escriben en el archivo de salida estándar file.txt
De esta manera, hay menos líneas duplicadas. y la eficiencia de generación es aceptable en comparación con otros métodos. Se necesitan 10 segundos para generar un archivo de 100 MB.