GUIで[シャットダウン]を押すとどうなりますか?


15

私はかなり長い間これに頭を打ちつけてきました。これはこの質問に関連しています。LinuxボックスをGUIからシャットダウンすることを選択した場合に何が起こるかを正確に知りたいと思います。これは文書化されているとはいえないようです。

理想的には、DEとOSに依存しない答えを期待しています。それがなければ、私はMandriva 2010.1とDebian 6.x(Squeeze)および7.0(Wheezy)がすべてGnomeを実行している特定のケースに興味があります。(細心の注意を払っている場合、はい、それはGnome 2とGnome 3です)

基本的に、「シャットダウン」または「再起動」を押すと、どのコマンド/スクリプト/スクリプトのシーケンスが開始されるかを知りたいので、それらの動作を変更できます。私が見たいくつかのフォーラムの投稿は、ハッキングを示唆して/etc/polkit-1/*いますが、このディレクトリ構造は、たとえば、Debian(Squeeze)ボックスのスケルトンにすぎません。

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


編集

私が今まで試したこと

  • shutdown実行可能ファイルを独自のスクリプトに置き換えました。これは機能しませんshutdown。Gnome を押すと、スクリプトを実行せずにログアウトします。
  • Gnome 2メニューの編集を試みました。喜びなし:「シャットダウン」、「ログアウト」、および「画面のロック」オプションはメニューエディターに表示されません。
  • 見て/usr/share/menu、そこには何も役に立たなかった。

ソリューションの可能な道

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

更新

以下の答えに対する私のコメントに従って、私はpolkit下のアクションを調べ、メッセージをスローするというアクションを/usr/share/polkit-1/actions/(ファイル内で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から「シャットダウン」または「電源オフ」を選択したときにトリガーされるメカニズムと同じでなければなりません。

誰でも確認/反論できますか?この信号を何らかの方法で傍受したり、変更したりする可能性はありますか?


何を達成しようとしていますか?停止時にスクリプト/etc/init.d/rc.local呼び出す編集を追加できます。
非公開

@depquid私が達成しようとしているのは、私がリンクした古い質問です。ローカルにログインしているユーザーが別のユーザーのSSHセッションを破壊しないようにしようとしています。
ジョセフR.

回答:


9

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

DMはルートとして実行されることに注意してください!(ログインするユーザーとしてセッションプロセスを実行するには、root権限が必要です)

KDEまたはGNOMEで[シャットダウン]をクリックすると、DEはDMに信号を送信して、セッションの終了後に電源を切るか再起動します。次に、DEはすべてのプログラムに終了するよう指示し、他のすべてのプロセスが終了(またはタイムアウトになった)すると、DEの最後のプロセス(セッションプロセス)が終了します。

セッションプロセスは、X11セッションで開始される最初のプロセスです。強制終了または終了すると、セッションは終了します。DEなしでXを実行しているときにxtermを見たことはありますか?それはセッションプロセスです。このプロセスはkdeinit、KDEおよびgnome-sessionGNOMEで呼び出されます。

セッションが終了すると、制御がDM(Xプロセスが終了するのを待っていた)に返され、DEが指示したことをチェックします。電源を切るか再起動するように指示した場合は、それを行います。それ以外の場合は、Xで新しいログイン画面を開始するだけです。

これは、過去に発生した可能性のある問題にも関連しています。一部のDEは、他のDMと組み合わせて使用​​すると、ログアウトするだけで電源を切ったり再起動したりできません。

いずれにせよ、これはそれほど悪い文書ではありません。GDMにはコマンドのマニュアルページがあり、以前に言ったように(gdm-control)シャットダウンするように指示できます。KDMにも優れたドキュメントがあり、同様の(もう少し複雑な)ユーティリティがありkdmctlます。


PolicyKitなしでシャットダウンと再起動が可能ですが、PolicyKitは、コンピューターをルート、サスペンド、または休止状態にせずにディスクをマウントするなど、現在のシステムで必要な多くの目的に役立ちます。そして、どちらも悪い文書ではありません!

PolicyKitとは何か、どのように機能するかについて詳しく知りたい場合は、こちらをご覧くださいhttp : //www.freedesktop.org/software/polkit/docs/latest/polkit.8.html


有望に聞こえます。ドキュメントへのリンクをありがとう。これらのマニュアルが包括的かつ明確であることは間違いありませんが、存在しなかった可能性もあります。あなたの答えは、この問題に関連して言及されたディスプレイマネージャーを見たのは初めてなので、まったく一般的な知識ではありません。私はこれを試して、あなたに知らせます...
ジョセフR.

OK。gdm-control助けにはなりませんでした。PolicyKitで提供されるドキュメントは、より有望なようです。それを掘り下げて、カスタムルールを実装できるかどうかを確認します。続行するには...
ジョセフR.

1
私はいくつかの読書(スキミングなど)を行いましたが、間違っている場合は修正してください:シャットダウンすると、DEがD-BUSのpolkitを介してDMにメッセージを送信します。認証が保留中の場合、セッションは終了するか、要求が取り消されます。これは、で定義されているpolkitというアクションorg.freedesktop.consolekit.system.stop-multiple-users/usr/share/polkit-1/actions非アクティブなユーザーのためにとの要求を取り消すには設定されているauth_admin_keepアクティブなユーザーのために。問題は、このアクションを定義するものは何ですか?正確に何を実行しますか?
ジョセフR.

@don_crissti理解できました。私が興味を持っているのは、まさにこの「シグナル」です。それを送信するクライアントは何ですか?
ジョセフR.

@don_crisstiこのコメントをフォローアップのために他の質問に移動しますか?
ジョセフR.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.