seqüência de processo de pipeline / tee do linux

1

Eu acho que para o comando do Linux, o pipeline: %código% executará com o comando sequence1 - > comando2 - > comando3.

Mas e o uso de tee: $ command1 | command2 | command3

Como $ command1 | tee >(command2) >(command3) e command2 têm a mesma entrada, minha pergunta é: command3 e command2 serão executados em paralelo (multithread?) ou na seqüência 2- > 3?

Obrigado.

    
por vivienlwt 14.10.2013 / 18:06

2 respostas

2

Eles serão executados em paralelo, se forem capazes de fazê-lo. O comando tee alimentará a entrada para ambos os comandos conforme ele for obtido. Isso os tornará "prontos para serem executados" se forem bloqueados na entrada e, em seguida, o sistema operacional os agendará em qualquer núcleo disponível. Isso não é multithreading porque isso ocorre dentro de um processo. Esta é uma operação multiprocessada.

    
por 14.10.2013 / 18:11
0

Tente executar este comando (Ctrl-C depois de um pouco):

(od -x /dev/urandom | tee >(sed 's/^/1 /') >(sed 's/^/2 /')) > /tmp/output

/ tmp / output será intercalado e sobrescrito à medida que cada processo tiver a chance de ser executado.

Além disso, quando você diz "executará com sequência" está incorreto. Acho que o DOS costumava simular pipelines com arquivos temporários, mas não com Unix.

(Eu nunca vi a sintaxe do > () antes. Aprenda algo novo todos os dias!)

    
por 04.03.2014 / 07:51

Tags