지금 링링을 신청하는 방법

지금 링링을 신청하는 방법

~에 따르면이 답변, 헤드리스 시스템에서 사용자에 대한 지연을 활성화했습니다. 그러나 에서는 loginctl list-sessions사용자가 아직 나열되지 않습니다. 해당 사용자를 사용하여 SSH를 통해 로그인하면 표시되고 다시 연결을 끊으면 손실됩니다.

전체 시스템을 다시 시작하지 않고 지연된 세션을 생성하는 방법

나는 시도했지만 성공하지 못했습니다 systemctl restart systemd-logind.

편집: 내 목표는 해당 사용자가 제어하는 ​​타이머를 실행하는 것입니다. sudo -iu지연이 활성화된 셸에서 이 양식을 시도 하면 다음 오류가 발생합니다.

$ systemctl --user status servicename
Failed to connect to bus: No such file or directory

ssh를 통해 로그인하고 loginctl에 세션을 표시하면 예상대로 작동합니다. 그러나 이제는 SSH 쉘에서만 작동하고 여전히 sudo쉘에서는 작동하지 않는다는 것을 알았습니다. 따라서 실제로 세션과 관련이 없을 수도 있습니다.

답변1

여기서 "사용자"와 "세션"을 혼동하고 있습니다.

를 사용하면 loginctl enable-linger myuser사용자의 사용자 관리자가 myuser시작 시(또는 아직 시작되지 않은 경우 즉시) 시작되지만 실제로는 사용자에 대한 세션이 시작되지 않습니다(이는 사용자가 로그인할 때만 발생합니다).

이 명령을 사용하면 loginctl list-users그 효과를 볼 수 있습니다. 또한 linger를 활성화한 직후 ps -fu myuser사용자에 대해 어떤 User Manager()가 실행되고 있는지 확인할 수도 있습니다.systemd --user

[root@myhost ~]# loginctl list-users
UID USER
  0 root

1 users listed.
[root@myhost ~]# ps -fu myuser
UID        PID  PPID  C STIME TTY          TIME CMD
[root@myhost ~]# loginctl enable-linger myuser
[root@myhost ~]# ps -fu myuser
UID        PID  PPID  C STIME TTY          TIME CMD
myuser   12345     1 20 18:44 ?        00:00:00 /usr/lib/systemd/systemd --user
myuser   12349 12345  0 18:44 ?        00:00:00 (sd-pam)
[root@myhost ~]# loginctl list-users
 UID USER      
   0 root      
1001 myuser

2 users listed.

myuser그러나 콘솔, GUI 또는 SSH를 통해 로그인되지 않았기 때문에 새 세션이 없습니다 .

[root@myhost ~]# loginctl list-sessions
SESSION UID USER SEAT TTY  
      1   0 root      tty0

1 sessions listed.

그러나 User Manager는 세션에 관계없이 시작되므로 사용자에게 사용자 유닛(예: 서비스 또는 타이머)이 있는 경우 해당 유닛은 사용자가 로그인했는지 또는 세션을 생성했는지 여부에 관계없이 시작 시 시작됩니다.

이것이 당신에게 설명되기를 바랍니다.


고쳐 쓰다: 질문 편집에 따르면 현재 겪고 있는 실제 문제는 SSH 세션이 아닌 셸 systemctl --user에서 명령을 실행하는 것 같습니다.sudo -i

XDG_RUNTIME_DIR사용자로 전환한 후 내보내면 이 문제를 해결할 수 있습니다. 예를 들면 다음과 같습니다.

$ export XDG_RUNTIME_DIR=/run/user/$UID

또는:

$ XDG_RUNTIME_DIR=/run/user/$UID systemctl --user status servicename

SSH를 통해 로그인할 때 이 작업을 수행할 필요가 없는 이유는 SSH가 PAM을 사용하여 사용자를 인증하고 PAM 모듈 중 하나가 이러한 환경 변수를 설정하기 때문입니다. PAM 을 사용하면 sudoPAM(적어도 전체 PAM 스택은 아님)을 거치지 않으므로 이러한 항목을 올바르게 설정할 수 없습니다.

관련 정보