사용자에 대한 세션을 시작하고 그 세션에서 명령을 실행하는 시스템 서비스를 만들려고 합니다. PAMName을 사용하여 다음과 같이 적절한 세션을 시작합니다.
[Unit]
Description=My service instance for %I
After=network.target
[Service]
Type=simple
User=%I
Environment=XDG_SESSION_CLASS=user
PAMName=my-service
# Use basic echo for testing unit functionality.
ExecStart=/bin/echo Test output
StandardOutput=journal
# Use same fd as stdout
StandardError=inherit
[Install]
WantedBy=multi-user.target
내가 겪고 있는 문제는 systemctl status
.it 에 출력이 표시되지 않는다는 것입니다.하다에 나타나 journalctl -e
므로 이미 기록되었으나 장치와 관련이 없습니다. PAMName에 대한 문서는 다음과 같이 말합니다.
이 옵션이 셀에 사용되는 경우 활성화되면 기본 셀 프로세스가 자체 세션 범위 셀로 마이그레이션될 가능성이 높습니다(PAM 구성에 따라). 따라서 프로세스는 원래 시작된(PAMName=이 구성된) 단위와 세션 범위 단위라는 두 개의 단위와 연결됩니다. 그러나 이 프로세스의 모든 하위 프로세스는 세션 범위 단위에만 연결됩니다.
systemctl status
자식 프로세스의 출력이 나타나지 않더라도 이중 연관으로 인해 기본 프로세스의 출력이 최소한 에 나타나기를 바랐 지만 출력이 전혀 없는 것 같습니다. 이로 인해 서비스를 시작할 때 무엇이 잘못되었는지 확인하거나 서비스에 대한 과거 로그를 보는 것이 까다로워집니다.
PAMName을 사용할 때 로그 메시지가 서비스 단위와 연결된 것처럼 보이게 하는 방법이 있습니까(stdout 또는 기타 로깅 메커니즘을 통해)?