- 締切済み
プロンプトが返らない
UNIXのKtermを開いて、あるシェルを実行したのですが、 実行後、プロンプトが返って来ません。 KtermにてCNTL+D、CNTL+C、Delete等を押しても 効きません。 プロンプトが返ってくるのと返らないのでは、システム的にどのような違いがあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Fooky
- ベストアンサー率71% (59/82)
> プロンプトが返ってくるのと返らないのでは、 > システム的にどのような違いがあるのでしょうか? 何通りか考えられると思います。 1つは、実行したプログラム内でCtrl-Cを無視するように してある場合です。ディストリビューションにくっついてくる 一般的なコマンドでは余りそういうことは無いように思いますが、 Ctrl-Cを無視するようにプログラム内で設定することは可能です。 もう一つは、プログラムがOSから強制的にスリープさせられて いる場合です。ディスクなどのデバイスの読み込み・書き込みの 順番待ち、メモリ領域確保(に異常があってメモリが確保できない)、 ネットワーク接続要求に対する応答待ちなどの理由で、 これらの要求をOSに出したプログラムがOSから「ちょっと待て」 と言ってスリープさせられることがあります。 通常の状態では起こりませんが、ディスクなどデバイスの異常、 AGPなど特殊なメモリドライバの異常、ネットワーク接続先ホストが停止、 ネットワーク障害、などでこのような状態になることがあります。 psコマンドでプロセスの状態を見たときに、状態が"D"になっていると OSからの強制スリープ状態です。 Ctrl-Cで止まらないプロセスに対しては、 kill -9 xxxx (xxxxはpsコマンドで調べたプロセスのプロセスID) killall -9 process_name (process_nameはプロセスの名前) で止められることが多いです。(ただ、後者の場合、同じ名前の プロセスが全部止まります。) 他にもいくつか理由はあると思われます。
- natural
- ベストアンサー率37% (419/1115)
シェルスクリプトの実行がきちんと終了していないのではないでしょうか。 ためしにもう一つKtermを起動してpsコマンドを実行してください。 プロセスが残っているようでしたらスクリプトの再確認をしましょう。 ちなみにプロンプトが返ってこない状態というのはフォアグラウンドのプロセスが終了していない状態で、次のコマンドが入力できないという弊害がありますね。 #Ctrl+Cが効かないとなると永久ループにはまっているのかもしれません。
お礼
ありがとうございます。助かります。