一部のコマンドが中断されます。 [閉じる]

一部のコマンドが中断されます。 [閉じる]

Linuxボックスがあり、SSHを使用してログインできます。私のシェルはです/bin/bash。最終的にbashシェルプロンプトが表示されます。

などのbash組み込みコマンドを実行できますecho。 (プレフィックスパス)からいくつかのコマンドを実行できます./binls /bin

他のコマンド(例:)whoamiが中断されているようです。 CTRL-C を押して bash プロンプトに戻ります。

他のコマンドは完全に中断され、CTRL-Cはコマンドを終了せず、bashプロンプトに戻りません。ls /usr/binシェルを一時停止するコマンドの例です。

パスは次のとおりです...誰かがこの質問をすることを知っているので...

$ echo $PATH  
/u01/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/u01/app/oracle/tools/home/oracle/bin

この問題の原因は何ですか?この問題を解決するにはどうすればよいですか?

答え1

derobertはすでにdmesgコメントで言及しています。次の絶対パスを使用して実行してみてください。

/bin/dmesg | /bin/more

ディスクエラーのように見えるものがあることを確認してください。リストされているディレクトリの1つがPATH失敗したディスクにある可能性があります。ディスクエラーが原因でディスクがフリーズすると、失敗した読み取り操作が永久に再試行されるため、実行するコマンドの検索中にシェルがハングすることがあります。

最小化を試すこともできますPATH。最初はちょうど設定してください。

PATH=/bin:/sbin

停止または絶対パスを使用せずにコマンドを実行できる場合は、/usr/binそのパスも再度追加してください/usr/sbin

PATH=/bin:/usr/bin:/usr/sbin:/sbin

これで、絶対パスを使用せずにすべての標準コマンドを使用できるようになりました。停止が発生しなくなったら、残りのディレクトリチェックを開始できます。

クイックチェックでlsコマンドを使用できますが、バックグラウンドで実行すると、コマンドが中断されても現在のセッションが利用できなくなることはありません。たとえば、

ls /u01/jdk/bin &

コマンド出力が表示されたら、Enterキーをls1回押すだけでプロンプトが再表示されます。 (バックグラウンドコマンドが完了したばかりのメッセージがシェルに表示されることもあります。)

出力がls表示されない場合や、著しく不完全な場合は、dmesgコマンド出力を再確認してください。これで、カーネルが出力の終わりにディスクI / Oエラーをスローしていることがわかります。これらのエラーメッセージは、エラーが発生したディスクデバイスを識別するために使用できますが、lsコマンドが失敗したパスを正確に知っている場合は、すでにこれについてかなりよく理解されています。

関連情報