Linuxボックスがあり、SSHを使用してログインできます。私のシェルはです/bin/bash
。最終的にbashシェルプロンプトが表示されます。
などのbash組み込みコマンドを実行できますecho
。 (プレフィックスパス)からいくつかのコマンドを実行できます./bin
ls /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キーをls
1回押すだけでプロンプトが再表示されます。 (バックグラウンドコマンドが完了したばかりのメッセージがシェルに表示されることもあります。)
出力がls
表示されない場合や、著しく不完全な場合は、dmesg
コマンド出力を再確認してください。これで、カーネルが出力の終わりにディスクI / Oエラーをスローしていることがわかります。これらのエラーメッセージは、エラーが発生したディスクデバイスを識別するために使用できますが、ls
コマンドが失敗したパスを正確に知っている場合は、すでにこれについてかなりよく理解されています。