web-dev-qa-db-ja.com

root権限なしでシェルからKDEセッションを適切に終了する方法

NX経由でマシン(KDEを備えたOpenSuse 11)にアクセスしています。

システムにキャプチャされているため、Alt-Ctrl-Delショートカットを使用できません。通常のログオフボタンは、KDEセッションを終了せずにNXセッションを終了するだけです。 root権限がないため、kdm restartを呼び出すことができません。

logoutexitなどの他のワイルドな推測も機能しません。最初の推測はログインシェルに存在しないという不満があり、2番目の推測はコンソールを閉じるだけです。

私のShell-fuは弱いので、どんな助けでもありがたいです。

17
kostja

Dbusを介してKDEにログアウトコマンドを送信できます。KDEは(可能であれば)セッションを終了します。

qdbus org.kde.ksmserver /KSMServer logout 0 0 0

dbusは、アプリケーションが相互に通信できるようにするメッセージングシステムであり、qdbusコマンドは、dbusメッセージをアプリケーションに送信するためのユーティリティです。

アプリケーションはdbusに登録され、KDEのksmserver部分はセッションマネージャーです。ログインするユーザーを管理します。

したがって、ksmserverへのメッセージを/KSMServerインターフェースに送信し、ログアウトするように指示しています。送信するメッセージは、デスクトップのログアウトアイコンをクリックしたときにKSMに送信されるメッセージとまったく同じです。

3つのゼロはパラメーターであり、実行しているログアウトのタイプを変更できます。

最初のパラメータ:

  • 0 =確認を待ちません
  • 1 =確認を待つ(タイムアウトは30秒)

2番目のパラメーター:

  • -1 =アクションのプロンプトを表示し、デフォルトでシャットダウンします(確認を待つ場合にのみ意味があります)。
  • 0 =ログアウト
  • 1 =再起動
  • 2 =シャットダウン

3番目のパラメーターは「いつ」パラメーターですが、その影響が明確ではありません。

30
Paul

受け入れられた答えはKDE5に固有のソリューションであり、より一般的なアプローチは

loginctl list-sessions
loginctl terminate-session <id>

または

loginctl terminate-user <username>

ソース

より多くの可能なコマンドがあります:

Session Commands:
  list-sessions            List sessions
  session-status [ID...]   Show session status
  show-session [ID...]     Show properties of sessions or the manager
  activate [ID]            Activate a session
  lock-session [ID...]     Screen lock one or more sessions
  unlock-session [ID...]   Screen unlock one or more sessions
  lock-sessions            Screen lock all current sessions
  unlock-sessions          Screen unlock all current sessions
  terminate-session ID...  Terminate one or more sessions
  kill-session ID...       Send signal to processes of a session

User Commands:
  list-users               List users
  user-status [USER...]    Show user status
  show-user [USER...]      Show properties of users or the manager
  enable-linger [USER...]  Enable linger state of one or more users
  disable-linger [USER...] Disable linger state of one or more users
  terminate-user USER...   Terminate all sessions of one or more users
  kill-user USER...        Send signal to processes of a user

Seat Commands:
  list-seats               List seats
  seat-status [NAME...]    Show seat status
  show-seat [NAME...]      Show properties of seats or the manager
  attach NAME DEVICE...    Attach one or more devices to a seat
  flush-devices            Flush all device associations
  terminate-seat NAME...   Terminate all sessions on one or more seats
3
noraj