GNU/Linux >> Linux の 問題 >  >> Linux

cat:write error:Broken pipe が発生するのはなぜですか?

理由は grep でパイプが閉じられているためです cat から読み取るデータがまだある場合 .シグナル SIGPIPE 猫に捕まって退場。

パイプラインで通常起こることは、シェルが cat を実行することです 1 つのプロセスで grep 別の。 cat の標準出力 grep のパイプと stdin の write-end に接続されています 読み終わりへ。何が起こったのか grep 存在しないパターン検索にヒットしてすぐに終了し、パイプの読み取り側が閉じられました。 cat パイプに書き出すデータがさらにあるため、好きではありません。書き込みアクションは、閉じられた相手に発生するため、 SIGPIPE cat に引っかかる

このような些細なケースでは、パイプラインの使用を完全に削除して、grep "pattern" file.txt として実行できます。 ファイルの内容が grep の stdin で利用可能になったとき


Linux
  1. Linux サービスを作成しているときに Exec フォーマット エラーが発生するのはなぜですか?

  2. su だけでなく su - を使用するのはなぜですか?

  3. crontab が機能しないのはなぜですか? どうすればトラブルシューティングできますか?

  1. なぜBashはスペースで始まるコマンドを保存しないのですか?

  2. Cut / Grep And Df -h?

  3. Grep And Tail -f?

  1. ファイル記述子が開かれ、一度だけ読み取られるのはなぜですか?

  2. 7 Linux Grep OR、Grep AND、Grep NOT 演算子の例

  3. Linux で mongod dead but subsys locked および Insufficient free space for journal files というエラーが発生するのはなぜですか?