Depende dos buffers do sistema operacional e do tempo entre a 10ª e a 11ª gravações de dmesg .
Depois que head escrever 10 linhas, ela será encerrada e dmesg receberá SIGPIPE sinal se continuar escrevendo no pipe.
Dependendo do seu buffer do sistema operacional, dmesg geralmente grava mais de 10 linhas antes que head as consuma.
Para ver que head consumiu mais de 10 linhas, você pode usar:
strace -f sh -c 'dmesg | head -n 10'
(Veja o processo head , conte com o número de read de chamadas do sistema.)
Para ver como o efeito da velocidade de escrita:
strace -f sh -c "perl -le '$|++;print 1 while 1' | head -n 10"