GNU/Linux >> Tutoriales Linux >  >> Linux

Establecer la capacidad de la tubería en Linux

las escrituras sobre la capacidad predeterminada de la tubería aún requerirán activar el comando aguas abajo

Si su objetivo no es activar el comando descendente con demasiada frecuencia, ¿intentó usar el -p? opción a buffer ? Debería causar buffer para mantener las escrituras hasta que el búfer se llene hasta cierto porcentaje. Es posible que necesite el -s opción también para escribir fragmentos grandes.

Actualización:D'oh, las tuberías entre los comandos aún limitan las cosas. Tal vez intente usar el siguiente programa adaptador:

#define _GNU_SOURCE
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
  fcntl(atoi(argv[1]), F_SETPIPE_SZ, atoi(argv[2]));
  execvp(argv[3],argv+3);
  while (1);
}

como en:

adapter 1 (BIGSIZE) cmd1 | cmd2

o incluso:

adapter 1 (BIGSIZE) cmd1 | adapter 1 (BIGSIZE) buffer [args] | cmd2

si cmd1 todavía hace escrituras pequeñas.


Basándome en las sugerencias de DepressedDaniel y Stéphane Chazelas, me decidí por lo más parecido a un oneliner que pude encontrar:

function hugepipe {
  perl -MFcntl -e 'fcntl(STDOUT, 1031, 1048576) or die $!; exec { $ARGV[0] } @ARGV or die $!' "[email protected]"
}

Esto permite hacer:

hugepipe <command> | <command>

y la tubería entre los dos comandos tendrá la capacidad especificada a través de fcntl en el script perl.


Linux
  1. Comando Chattr en Linux (establecer bit inmutable)

  2. Comando dmesg de Linux - Imprimir búfer de anillo del kernel

  3. comando linux mv

  4. Linux du comando

  5. Linux:establezca la fecha a través de la línea de comando

Comando de vigilancia de Linux

Comando Xargs en Linux

Comando Nohup de Linux

Comando de tipo Linux

Comando W en Linux

Al mando en Linux