GNU/Linux >> Tutoriels Linux >  >> Linux

Définir la capacité du tuyau sous Linux

les écritures sur la capacité de tuyau par défaut nécessiteront toujours de réveiller la commande en aval

Si votre objectif n'est pas de réveiller trop souvent la commande en aval, avez-vous essayé d'utiliser le -p option à buffer ? Cela devrait causer buffer pour maintenir les écritures jusqu'à ce que le tampon soit rempli à un certain pourcentage. Vous pourriez avoir besoin du -s possibilité également d'écrire de gros morceaux.

Mise à jour :D'oh, les tuyaux entre les commandes limitent toujours les choses. Essayez peut-être d'utiliser le programme d'adaptateur suivant :

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

comme dans :

adapter 1 (BIGSIZE) cmd1 | cmd2

ou encore :

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

si cmd1 fait encore de petites écritures.


Sur la base des suggestions de DepressedDaniel et Stéphane Chazelas, j'ai choisi ce qui se rapprochait le plus d'un oneliner que j'ai pu trouver :

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

Cela permet de faire :

hugepipe <command> | <command>

et le tuyau entre les deux commandes va avoir la capacité spécifiée via le fcntl dans le script perl.


Linux
  1. Commande Linux mv

  2. Linux du command

  3. Commande IP Linux

  4. Commande cd Linux

  5. Linux :définir la date via la ligne de commande

Commande de surveillance Linux

Commande Xargs sous Linux

Commande Linux Nohup

Commande de type Linux

Commande W sous Linux

À la commande sous Linux