
私は現在経験していることです。Ubuntu 13.10のバグこれは、一時停止後にコンピュータを再起動すると、ネットワーク接続が再起動しないことを意味します。複数のNFSマウントがあり、静止しているため、コマンドラインから何かを実行しようとするたびに(このバグレポートの回避策など)、シェルはハングしますnmcli cli sleep false
。 「停止」とは、どの信号(Ctrl-C、Ctrl-Z、killなど)にも応答しないという意味です。
絶対パス(たとえば/usr/bin/nmcli
)を使用すると、期待どおりに機能します。ネットワーク接続を復元すると、停止したすべてのプロセスが再開され、実行が完了します。
なぜこのようなことが起こるのか混乱しています。現在疑われているのは、bashがNFSマウントディレクトリの1つで私が実行したいコマンドを検索しようとしていることです。ただし、鉱山にはPATH
NFSマウントディレクトリは含まれていません。
だから私の質問は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"'
これにより、デバイスに保留中のプロセスが表示されます。
答え2
デフォルトでは、NFSはハード無中断FS呼び出しを使用します。したがって、FS操作(読み取り、書き込み、統計など)を「Ctrl + C」または「Ctrl + Z」にすることはできません。
「Ctrl + C」を使用するには、「NFS共有マウント」オプションを使用できます。整数"システムコールを中断する機能。以下を使用してテストできます。 mount -o remount,intr /YOUR/MOUNTPOINT
次に、/ etc / fstabファイルを編集して永続性オプションを追加します。
「nolock」オプションは、単に複数のクライアントの同時書き込みを防ぐために使用される「ファイルロック」方法を無効にします。 I/O とは何の関係もありません。
「なぜ中断され、NFSの場所への参照がない」という質問の場合、bashcompletionに問題があるか、実際にNFSをテストするためにコマンドを使用するスクリプトがありますか?
アドリアン。
答え3
クライアント側で「-o nolock」オプションを使用すると、問題が解決する可能性があります。
答え4
一般的な原因は、プロセスがNFS共有を待っている間にタイムアウトしたためです(通常はまったく発生しません)。シェルの最も可能性の高い原因はPATH
ディレクトリの1つです。今後実際、実行可能ファイルを含むファイルはアクセスできないNFS共有にあります(わかるように実際にはそうです)。