2

Ctrl+c一般的な Linux シェルでは、コマンドの実行を停止するために使用できます。ワイルドカード (* など) を使用して特定のパターンのすべてのファイルを検索する実行を開始した場合、および検索する必要があるファイルが多数ある場合は、シェルがワイルドカードを展開するのに非常に長い時間がかかる場合があります。実際のファイル名。その間、Ctrl+c はシェルを停止しません。シェルは、ワイルドカードの解決を続行します。Ctrl+c は、シェルがワイルドカードを解決した後にのみ有効になり、それにはかなりの時間がかかります。

ワイルドカードを展開しようとしているときにシェルを停止する方法はありますか?

これは でテストされていGNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)ます。

4

2 に答える 2

2

シェルがワイルドカードを展開するのに非常に長い時間がかかっている場合は、次のいずれかが発生している可能性があります。

  1. あなたは次のようなことをしています*/*/*/*/*/*- 解決策:それをしないでください。あなたがしていることをより小さなビットに分解する方法を見つけるか、少なくともより効率的に処理する方法を見つけてください
  2. ディレクトリに途方もなく多くのファイルがあります - 解決策: そうしないでください。ディレクトリ内にファイルが多すぎると、多くのファイル システムでパフォーマンスが低下することがよく知られています (ただし、他のファイル システムよりも適切に対処できるものもあります)。
  3. ファイル システムは、やや遅いネットワーク リンク上のネットワーク ファイル システム (NFS、Samba/CIFS、sshfs など) であるか、CD/DVD などの低速の物理メディア上にあります。一度に一致するファイルの数を減らすか、待機する以外に、ここで行うことはあまりありません。
  4. ファイル システムは通常は高速ですが、古くなったハード ドライブ上にあり、読み取り/書き込みエラーが発生し始めているため、長時間のタイムアウトのように見えるセクターを再配置しようとしています。システム ログをチェックして、恐ろしいディスク メッセージがないか調べてください。その場合は、新しいディスクを購入して、昨日データをそこに移動してください。
  5. 他にもありそう…

それまでの間、他の提案/コメント/回答は、シェルがハングしているように見える場合にシェルを強制終了する機能を示しています。

于 2013-01-24T21:26:59.483 に答える
1

プロセスを強制終了できると思います。Ctrl-zを停止しps aux | grep processname、プロセス ID を取得し、次にkill processid.

于 2013-01-24T21:09:10.483 に答える