A resposta para isso depende de qual shell você está usando. Muitos shells possuem echo
um comando interno, o que significa que ele não gera um processo separado e, portanto, não será exibido em uma lista de processos. No entanto, se você digitar /bin/echo
ou ./echo
desabilitar os recursos internos com o enable -n echo
comando, o shell não usará seu comando interno e, em vez disso, usará a versão binária. Isso será exibido em uma lista de processos.
Se você estiver usando o binário e não o shell interno, o comando echo será exibido pelo tempo necessário para mover os dados para o buffer STDIN do outro processo. Esse buffer possui um tamanho finito; portanto, se houver mais dados que caberão no buffer, o comando echo terá que permanecer por um tempo até que o outro processo possa ler alguns dados do buffer. Para a maioria dos casos (como os dois exemplos que você deu acima), esse período será de microssegundos. Se você estiver colando um dump de SQL de 20 MB no MySQL usando echo, isso poderá ser mais longo. Não importa quão curto seja o tempo, se você estiver usando o binário em vez do shell embutido e alguém acertar o tempo, eles poderão ver o processo na lista de processos.
Você pode evitar isso colocando os dados secretos em um arquivo (com permissões apropriadas) e usando o arquivo como STDIN assim:
mysql -u root -p < file_with_secret.sql