GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta la capacità del tubo in Linux

le scritture sulla capacità della pipe predefinita richiederanno comunque il risveglio del comando downstream

Se il tuo obiettivo non è svegliare troppo spesso il comando downstream, hai provato a utilizzare -p opzione a buffer ? Dovrebbe causare buffer per trattenere le scritture finché il buffer non viene riempito fino a una certa percentuale. Potresti aver bisogno del -s anche un'opzione per scrivere blocchi grandi.

Aggiornamento:D'oh, i tubi tra i comandi limitano ancora le cose. Forse prova a utilizzare il seguente programma adattatore:

#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);
}

come in:

adapter 1 (BIGSIZE) cmd1 | cmd2

o anche:

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

se cmd1 fa ancora piccole scritture.


Sulla base dei suggerimenti di DepressedDaniel e Stéphane Chazelas, ho optato per la cosa più vicina a una battuta che potessi trovare:

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

Questo permette di fare:

hugepipe <command> | <command>

e la pipe tra i due comandi avrà la capacità specificata tramite fcntl nello script perl.


Linux
  1. Comando Chattr in Linux (imposta bit immutabile)

  2. Comando Linux dmesg - Stampa il buffer dell'anello del kernel

  3. comando IP Linux

  4. comando cd di Linux

  5. Come posso reindirizzare al comando split di Linux?

Comando di sorveglianza di Linux

Comando Xargs in Linux

Comando Linux Nohup

Tipo di comando Linux

Comando W in Linux

Al comando in Linux