NFSがハングしたときにプログラムを起動しようとしたときにbashがハングするのを止める方法

NFSがハングしたときにプログラムを起動しようとしたときにbashがハングするのを止める方法

私は現在経験していることです。Ubuntu 13.10のバグこれは、一時停止後にコンピュータを再起動すると、ネットワーク接続が再起動しないことを意味します。複数のNFSマウントがあり、静止しているため、コマンドラインから何かを実行しようとするたびに(このバグレポートの回避策など)、シェルはハングしますnmcli cli sleep false。 「停止」とは、どの信号(Ctrl-C、Ctrl-Z、killなど)にも応答しないという意味です。

絶対パス(たとえば/usr/bin/nmcli)を使用すると、期待どおりに機能します。ネットワーク接続を復元すると、停止したすべてのプロセスが再開され、実行が完了します。

なぜこのようなことが起こるのか混乱しています。現在疑われているのは、bashがNFSマウントディレクトリの1つで私が実行したいコマンドを検索しようとしていることです。ただし、鉱山にはPATHNFSマウントディレクトリは含まれていません。

だから私の質問は2つです。シェルがこのように停止するのはなぜですか。どうすれば停止できますか?

ベストアンサー1

私の経験によると、LinuxのNFS実装はSolarisのNFS実装ほど強力ではありません。特に、Linux の NFS によってデバイスのプロセスが中断される可能性があるため、一部のプロセスが次の状態で表示されることがあります。

[pkearns@centos6 ~]$ ps -lp $$
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 D   500  2626  2307  0  80   0 -  1282 -      pts/1    00:00:00 bash
[pkearns@centos6 ~]$ 

2番目の列は、Dプロセスがデバイスで停止したことを示します。デバイスの停止は予測不可能な方法でシステム全体に伝播し、関連性がないように見えるプロセスを妨げる可能性があります。

この試み:

ps -elf | awk '$2=="D"'

これにより、デバイスに保留中のプロセスが表示されます。

おすすめ記事