GUIで「終了」を押すとどうなりますか?

GUIで「終了」を押すとどうなりますか?

私は長い間これに対抗して戦ってきました。これは以下に関連しています。この問題。 GUIでLinuxボックスを終了することを選択した場合、正確に何が起こるのかを知りたいです。これはよく文書化されていないようです。

理想的には、DEとOSに拘束されない答えが欲しいです。それに加えて、私はGnomeを実行しているMandriva 2010.1とDebian 6.x(Squeeze)と7.0(Wheezy)の詳細に興味があります。 (詳しくは、はい、Gnome 2とGnome 3です)

デフォルトでは、「閉じる」または「再起動」をクリックすると、スクリプトのどのコマンド/スクリプト/シーケンスが実行され、その動作を変更できるかを知りたいです。私が見たいくつかのフォーラム記事ではハッキングを提案しましたが、/etc/polkit-1/*このディレクトリ構造は私のDebianボックスのスケルトンです。

誰でも助けることができますか?


編集する

今まで試したこと

  • shutdown実行ファイルを私のスクリプトに置き換えました。これはうまくいきません。 Gnomeを押すと、shutdownスクリプトを実行せずにログアウトします。
  • Gnome 2メニューを編集してみてください。満足していません:「終了」、「ログオフ」、および「ロック画面」オプションはメニューエディタに表示されません。
  • 探してみたのに/usr/share/menu役に立ちませんでした。

問題を解決する可能な方法

  • straceGUIオプション(これは可能ですか?)
  • shutdownソースコードを見る
  • gnome-sessionソースコードを見る

修正する

以下の回答に対する私の意見に基づいて、以下のタスクをpolkit調べた/usr/share/polkit-1/actions/ところ、ファイルでthrow messageというタスクがorg.freedesktop.consolekit.policy見つかりました。org.freedesktop.consolekit.system.stop-multiple-users

System policy prevents stopping the system when other users are logged in

私は(命名規則のためにorg.freedesktop.*)これがD-BUSを介してDMに送信される信号の一種だと思います。また、このメッセージは、他のユーザーがログインしてグラフィカルにシャットダウンしようとしたときに発生するため、メッセージをトリガーするメカニズムは、GUIでシャットダウンまたはパワーオフを選択したときと同じでなければなりません。

誰でもこれを確認/反論できますか?どのような方法でこの信号を傍受または修正できますか?

答え1

ディスプレイマネージャによって異なります! (例:KDM、GDM)

あなたのDMがrootとして実行されていることを覚えておいてください! (ログインしたユーザーでセッションを実行するにはroot権限が必要です)

KDEまたはGNOMEで[終了]をクリックすると、DEはセッションが終了した後に終了または再開するように指示する信号をDMに送信します。その後、DEは各プログラムに終了を通知し、他のすべてのプロセスが終了(またはタイムアウト)すると、DEの最後のプロセス(セッションプロセスなど)が終了します。

セッションプロセスは、X11セッションで開始される最初のプロセスです。セッションが終了または終了すると、セッションは終了します。 DEなしでXを実行するときにxtermを見たことがありますか?これは会話プロセスです。このプロセスはkdeinitKDEとGNOMEで呼び出されますgnome-session

セッションが終了すると、コントロールはDM(Xプロセスの終了を待っています)に返され、DEが指示した内容を確認します。電源を切るか再起動するように求められたら、そうなります。それ以外の場合は、Xで新しいログイン画面が起動します。

これは、過去に他のDMと組み合わせた一部のDEをシャットダウンまたは再開できず、ログアウトのみ可能であった問題にも関連しています。

とにかくそれほど悪い記録ではありません。 GDMには、「gdm-control(1)」コマンドのマニュアルページがあります。これにより、以前に述べたように終了するように指示できます(gdm-control)。 KDMは優れた文書化という同様の(やや複雑な)ユーティリティもありますkdmctl


PolicyKitなしでシャットダウンして再起動できますが、PolicyKitは、コンピュータをルーティングせずにディスクをマウント、一時停止、休止状態にするなど、今日のシステムに必要なさまざまな目的を実行できます。そしてそれは悪い記録ではありません!

PolicyKitが何であるか、どのように機能するかを詳しく知るには、次のことを確認してください。http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

関連情報