これに対する答えは、使用しているシェルによって異なります。多くのシェルが持っているecho
として、組み込みのそれはリストのプロセスに表示されませんので、別のプロセスを生成していないことを意味コマンド。しかし、あなたが入力した場合/bin/echo
や./echo
、またはあなたが組み込みコマンドを無効にした場合enable -n echo
、コマンドは、シェルは、その組み込みコマンドを使用せず、代わりにバイナリバージョンを使用します。これはプロセスリストに表示されます。
シェルのビルトインではなくバイナリを使用している場合、他のプロセスのSTDINバッファーにデータを移動するのにかかる限り、echoコマンドが表示されます。このバッファのサイズは有限であるため、バッファに収まらないデータがある場合、他のプロセスがバッファからデータの一部を読み取ることができるようになるまで、echoコマンドはしばらく待機する必要があります。ほとんどの場合(上記の2つの例など)、この期間はマイクロ秒になります。エコーを使用してMySQLに20MBのSQLダンプを貼り付ける場合、これは長くなる可能性があります。どんなに短い時間であっても、シェル組み込みの代わりにバイナリを使用していて、誰かがたまたまタイミングを合わせると、プロセスリストでプロセスを見ることができます。
これを回避するには、秘密データをファイルに(適切なアクセス許可を使用して)入れ、このファイルを次のようにSTDINとして使用します。
mysql -u root -p < file_with_secret.sql