루트 권한없이 쉘에서 KDE 세션을 올바르게 종료하는 방법


17

NX를 통해 머신 (KDE가있는 OpenSuse 11)에 액세스하고 있습니다.

시스템에서 캡처 한 Alt-Ctrl-Del 단축키를 사용할 수 없습니다. 일반 로그 오프 버튼은 KDE 세션을 종료하지 않고 NX 세션을 종료합니다. kdm restart루트 권한이 없으므로 전화를 걸 수 없습니다.

같은 다른 야생 추측 logout하고 exit, 하나가 작동하지 않는 첫 번째에 대한 로그인 쉘에없는 두 번째 하나가 바로 콘솔을 닫는 불평.

껍데기가 약해서 도움을 주시면 감사하겠습니다.



@ MartinSchröder-아, 좋은 캐치-그것은 본질적으로 같은 질문입니다. 그러나이 질문에 대한 바울의 대답은 다른 질문에 대한 질의 대답보다 더 철저합니다.
kostja

답변:


30

dbus를 통해 로그 아웃 명령을 KDE에 보낼 수 있으며, 가능하면 세션을 종료해야합니다.

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

dbus는 응용 프로그램이 서로 통신 할 수 있도록하는 메시징 시스템이며이 qdbus명령은 dbus 메시지를 응용 프로그램으로 보내는 유틸리티입니다.

응용 프로그램은 dbus에 등록되며 ksmserverKDE 의 일부는 세션 관리자입니다. 누가 로그인했는지 확인합니다.

그래서 우리에게 메시지를 보내고 ksmserver받는 /KSMServer인터페이스와 로그 아웃을 말하고. 우리가 전송하는 메시지는 데스크탑에서 로그 아웃 아이콘을 클릭 할 때 KSM에 전송되는 것과 정확히 동일한 메시지입니다.

세 개의 0은 매개 변수이며 수행중인 로그 아웃 유형을 변경할 수 있습니다.

첫 번째 매개 변수 :

  • 0 = 확인을 기다리지 않음
  • 1 = 확인 대기 (30 초 시간 초과)

두 번째 매개 변수 :

  • -1 = 작업 프롬프트, 기본값은 종료 (확인을 기다리는 경우에만 해당)
  • 0 = 로그 아웃
  • 1 = 재시작
  • 2 = 셧다운

세 번째 매개 변수는 "when"매개 변수이지만 그 영향이 무엇인지 명확하지 않습니다.


이 명령을 실행하기 전에 DISPLAY환경 변수 (대부분) 를 설정하십시오 :0. 그렇지 않으면 불평합니다.
palswim

3

허용되는 답변은 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.