ハングした TTY ポートのクリア
このハングしたポートのクリア例では、ハングした tty ポートが tty0 であると想定します。
この手順を完了するには、root 権限が必要です。
- 次のように入力して、現在、tty がプロセスを処理しているかどうか判別します。
ps -lt tty0次のような結果が戻されます。
ここでのプロセス ID (PID) は 22566 です。 このプロセスを強制終了するには、次のように入力します。F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 240001 S 202 22566 3608 0 60 20 781a 444 70201e44 tty0 0:00 kshkill 22566コマンドps -lt tty0を入力して、プロセスが正常にクリアされたことを確認します。 プロセスがまだ存在している場合は、次の例に示すように、kill コマンドに-9フラグを追加します。注意: -9 オプションを使って slattach プロセスを kill しないこと。 slattach プロセスを-9フラグを付けて強制終了すると、SLIP ロックが /etc/locks ファイル内に 残る可能性があります。 slattach のあと、クリーンアップのためにこのロック・ファイルを削除してください。kill -9 22566 - 次のように入力して、tty を使用しようとしているプロセスがあるか判別します。
ps -ef | grep tty0注: ps -ef | grep tty コマンドが以下のようなものを返す場合、
この tty は正しいケーブルに接続されていません ("-" は、日付 (root 19050 1 0 Mar 06 - 0:00 /usr/sbin/getty /dev/ttyMar 06) と時刻 (0:00) の間に表示される)。 この状況は、システム・ログイン・プロセス (getty) がこの tty をオープンしようとして 、RS-232 シグナルがデータ・キャリア検知 (DCD、Data Carrier Detect) の状態にならなかったために オープン・プロセスがハングしていることを示します。 この問題は、配線に正しい null モデム・アダプターを使用することで修正することができます。 getty が tty ポートをオープンできるときは、"-" の部分は tty 番号で置き換えられます。 ケーブルについて詳しくは、 適切なケーブルを使用したモデムの接続を参照してください。注: 以下のコマンドを使用して、tty0でのログイン・プロセスを無効にすることができます。pdisable tty0プロセスが正常にクリアされても、まだ tty が応答しないようであれば、次のステップに進みます。
- 次のコマンドを入力します。
これは、ポート上で実行中であることが分かったプロセスをクリアして、PID を表示します。 tty がまだ使用可能でなければ、次のステップに進みます。fuser -k /dev/tty0 - strreset コマンドを使用して、リモート・エンドへの接続が失われたために配信できないデータが原因でハングしたポートからの発信データをフラッシュします。 注: strreset コマンドによってハングしたポートが修正された場合、リモート・エンドへの接続が失われるとバッファーに入れられたデータが自動的にフラッシュされるため、ポートにはケーブルまたは構成の問題があります。次のように入力して、まず、tty のメジャーおよびマイナー・デバイス番号を判別する必要があります。
次のような結果が表示されます。ls -al /dev/tty0
これは、crw-rw-rw- 1 root system 18, 0 Nov 7 06:19 /dev/tty0tty0のメジャー・デバイス番号が 18 で、マイナー・デバイス番号が 0 であることを示しています。 これらの番号は、strreset コマンドを使用するときに次のように指定します。
tty がまだ使用可能でなければ、次のステップに進みます。/usr/sbin/strreset -M 18 -m 0 - 停止した tty ポートからケーブルを切り離し、それから再接続します。 AIX® は、Data Carrier Detect (DCD) シグナルを使用して、ポートに接続されたデバイスの存在を判別します。 DCD をドロップし、ケーブルを切り離して再接続することによって、多くの場合、ハングしたプロセスをクリアできます。tty が構成されているポートの場所を判別するには、次のコマンドを入力します。
次のような結果が表示されます。lsdev -Cl tty0
この出力の 3 番目の列は、tty のロケーション・コードを示しています。 この例のtty0 Available 00-00-S1-00 Asynchronous TerminalS1は、シリアル・ポートがネイティブ・シリアル・ポート 1 に構成されていることを示します。 ロケーション・コードの解釈について詳しくは、 オペレーティング・システムおよびデバイスの管理の ../devicemanagement/devloccodes.html を参照してください。tty がまだ使用可能でなければ、次のステップに進みます。
- stty-cxmaを使用してポートをフラッシュします。 次のように入力します。
/usr/lbin/tty/stty-cxma flush tty0このコマンドは、8 ポートおよび 128 アダプターのポートに構成された tty 用です。 しかし、場合によっては、他の tty ポートを使用して、正常にフラッシュすることもできます。
tty がまだ使用可能でなければ、次のステップに進みます。
- ハングした端末のキーボードで、
Ctrlキーを押したままQを押します。 これによって Xon 文字が送信され、中断されていた出力が再開されます。tty がまだ使用可能でなければ、次のステップに進みます。
- プログラムは、tty ポートをオープンし、属性をいくつか変更したあと、それらの属性を元の状態にリセットしないでクローズしてしまうことがあります。 これを訂正するために、tty を DEFINED 状態に下げ、次を入力して tty を使用可能にします。
このコマンドは、tty に関する情報をデータベースに残しますが、システム上で tty を使用不可にします。rmdev -l tty0次のコマンドは、tty を再びアクティブ化します。tty がまだ使用可能でなければ、システムがリブートできるようになるまで、デバイスを別のポートに移動して、その場所で tty を構成することを考えます。 リブートしてもポートがクリアされなければ、ほぼハードウェアの障害です。 次を入力して、ポートにハードウェア障害がないかエラー・レポートをチェックしてください。mkdev -l tty0errpt -a | pg
これまでに挙げたコマンドの内、いくつかは機能せずに、デバイスが使用中であることを示すメソッド・エラーを戻すことがあります。 これは、プロセスが tty 上で実行中であるためです。 上記のステップのいずれもハングした tty を解放しない場合は、最後の手段として、 AIX システムをリブートし、カーネルをフラッシュしてプロセスが終了するようにします。