GNU/Linux >> Znalost Linux >  >> Linux

Nastavte kapacitu potrubí v Linuxu

zápisy přes výchozí kapacitu kanálu budou stále vyžadovat probuzení downstream příkazu

Pokud vaším cílem není příliš často probouzet downstream příkaz, zkusili jste použít -p možnost buffer ? Mělo by to způsobit buffer podržet zápisy, dokud se vyrovnávací paměť nenaplní na určité procento. Možná budete potřebovat -s možnost také psát velké kusy.

Aktualizace:D'oh, roury mezi příkazy stále omezují věci. Možná zkuste použít následující program adaptéru:

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

jako v:

adapter 1 (BIGSIZE) cmd1 | cmd2

nebo dokonce:

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

pokud cmd1 stále dělá malé zápisy.


Na základě návrhů DepressedDaniel a Stéphane Chazelas jsem se rozhodl pro to, co je nejblíže k onelineru, který jsem našel:

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

To umožňuje:

hugepipe <command> | <command>

a roura mezi dvěma příkazy bude mít kapacitu určenou pomocí fcntl ve skriptu perl.


Linux
  1. Příkaz Chattr v Linuxu (Set Immutable Bit)

  2. Příkaz dmesg pro Linux - Tisk kruhové vyrovnávací paměti jádra

  3. Jak přejdu pomocí kanálu na příkaz rozdělení Linuxu?

  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz

  1. Úvod do rour a pojmenovaných rour v Linuxu

  2. Linux cd příkaz

  3. Linux:nastavte datum pomocí příkazového řádku