A resposta para isso depende de qual shell você está usando. Muitos shells têm echo
como um comando incorporado , o que significa que ele não desova um processo separado e, portanto, não será exibido em uma listagem de processos. No entanto, se você digitar /bin/echo
ou ./echo
ou se desativar os arquivos incorporados com o comando enable -n echo
, o shell não usará o comando interno e usará a versão binária. Isso será exibido em uma listagem de processos.
Se você estiver usando o binário em vez do shell embutido, o comando echo aparecerá durante o tempo necessário para mover os dados para o buffer STDIN do outro processo. Este buffer tem um tamanho finito, portanto, se houver mais dados do que os que cabem no buffer, o comando echo terá que ficar por algum tempo até que o outro processo possa ler alguns dos dados do buffer. Para a maioria dos casos (como os dois exemplos que você deu acima), esse período de tempo será de microssegundos. Se você estiver colando um despejo SQL de 20 MB no MySQL usando o eco, isso pode 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 conseguir 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 as permissões apropriadas) e usando o arquivo como STDIN assim:
mysql -u root -p < file_with_secret.sql