GNU/Linux >> Linux の 問題 >  >> Linux

プロセスが強制終了されましたが、カーネル通知を理解できません

この場合の SAK は、実際には Secure Attention Key を意味します .表示されているメッセージは、drivers/tty/tty_io.c で定義されているカーネル メッセージです。 SAK は、コンソールでのユーザーの安全なログインを保証するキーの組み合わせです。 Linux では、SAK は、SAK が呼び出された端末に接続されているすべてのプロセスを強制終了することでこれを保証します。 init が期待されます getty のように信頼できるログイン プロセスを再開します。 続いて login または X サーバー ディスプレイ マネージャーを使用 .

リストされた PID は、アプリケーション CX_SC3 のスレッドの PID です。 SAK によって殺されました。

fd#n opened to the tty 強制終了されたプロセス/スレッドがファイル記述子 n を持っていたことを意味します SAK が呼び出された端末に開かれました。

Linux では、SAK を呼び出す方法が 2 つあります:

<オール>
  • 魔法の SysRq キーを使用 - 通常は Alt +SysRq +K (仮想端末) または Break K (シリアル コンソール)。あなたはすでに魔法の SysRq を無効にしようとしたので、これはあなたのケースではありません echo 0 > /proc/sys/kernel/sysrq まで Breakを送る K 偶然の連続はありそうもない.

  • 定義されたキー シーケンス (仮想端末) またはブレーク信号 (シリアル コンソール) を介して。シリアル コンソールでの SAK の可用性は、setserial によって制御されます。 .

  • シリアル ラインのブレーク信号は、文字送信時間 (開始、停止、およびパリティ ビットを含む) よりも長い時間にわたって間隔値を連続的に送信することです。あなたの場合、ホスト マシンのシャットダウン中にブレーク信号の状態が現れる可能性が非常に高くなります。 setserial までに、ターゲット デバイスのシリアル ポートで SAK をオフにしてみてください。 :

    setserial /dev/ttyS0 ^sak
    

    setserial -g /dev/ttyS0 でシリアル ポートの SAK 機能の状態を確認できます。 .オンにすると、SAK と表示されます Flags:の後 .起動後のオプションの自動設定については、BusyBox システムでは通常 /etc/init.d/rcS である起動スクリプトを参照してください。 と /etc/rc.d/S* または /etc/inittab をチェックしてください 他の可能性のために。


    paboukの回答の助けを借りて、なんとか問題を解決できました。 SAK を許可する、私が最終的に発見したコードベースのソリューション ユーザー空間 API を使用して開くときにシリアル ポートで設定/設定解除するフラグは、こちらのスタック オーバーフローにあります。ユーザー空間 API を使用して Linux でシリアル ポート SAK オプションを無効にするにはどうすればよいですか?


    Linux
    1. Linuxカーネルの誕生日おめでとう:あなたのお気に入りのリリースは何ですか?

    2. Linuxカーネルテストのライフサイクル

    3. Linux – Linuxカーネルの実行中にハードドライブに障害が発生した場合はどうなりますか?

    1. Unix で別のプロセスの環境変数を変更する方法はありますか?

    2. Linux カーネルの copy_from_user は内部でどのように機能しますか?

    3. 現在の Linux カーネル ソースは何ですか?

    1. ターミナルでHZを確認するには?

    2. sysctl でプロセスごとの最大オープン ファイル数を変更できない

    3. コマンドラインからGUI Linuxプログラムを起動する方法はありますが、コマンドラインとは別ですか?