일반 사용자 시스템 서비스에 대한 로그가없는 이유는 무엇입니까?


26

기본 시스템 사용법을 배우려고하는데 사용자 서비스 단위와 혼동되는 문제가 발생했습니다.

systemctl start some.service를 사용 하여 일반 서비스를 실행할 때 sudo journalctl --unit some.service를 실행 하여이 서비스에 대한 전체 로그 (내가 알기로 stdout / stderr에 인쇄 한 것을 포함하여)를 찾을 수 있습니다 .

servicefile chatty.service 예제를 고려하십시오 .

[Service]
ExecStart=/usr/bin/echo "test from chatty.service"

이 서비스 파일을 ~ / .config / systemd / user / chatty.service에 배치 하고 systemctl --user start chatty.service로 실행하면 일반 journalctl 이나 journalctl을 사용 하여 journalctl 에서 stdout으로 전송 된 출력을 찾을 수 없습니다. -user . 나는 두 가지 모두에서 다음과 같은 결과 만 얻습니다.

Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Starting chatty.service...
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Started chatty.service.

그리고 journalctl --unit chatty.service 는 아무 것도 반환하지 않습니다 (user의 유무에 관계없이 차이는 없습니다).

동일한 서비스 파일을 / etc / systemd / system으로 이동 하고 sudo systemd start chatty.service로 실행하면 sudo journalctl --unit chatty.service를 실행할 때 다음과 같은 출력이 표시됩니다 .

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Jan 15 19:28:08 qbd-x230-suse.site echo[27098]: test from chatty.service

사용자 서비스 단위가 어떻게 든 잘 통합되지 않은 것 같습니다. 이것이 예상입니까, 뭔가 빠졌습니까, 아니면 버그입니까?

systemd 208 (기본 설치)과 함께 openSUSE 13.1 x86-64를 실행하고 있습니다.


아치 리눅스에서도 208 시스템이 동일합니다. journalctl --user --user-unit chatty적어도 내 경우에는 에코 프로세스가 출력하는 것이 아니라 시스템 시작에서 시작 / 중지 메시지를 얻는 데 사용할 수 있습니다 . 에코 메시지를 journalctl --user받거나 다른 필터를 사용할 수 있습니다 .
lilydjwg

답변:


20

--user-unit옵션을 사용 하고 귀하의 경우에는 ...

journalctl --user-unit chatty

로그 출력에 "chatty.service에서 테스트"stdout 메시지가 표시되거나 "chatty.service 시작 중 ..."및 "chatty.service가 시작되었습니다." 메시지?
Quantumboredom

예, 프로세스에서 결과를 얻을 수있었습니다 (예 : "chatty.service에서 테스트"메시지).
elynnaie

그것이 내가 기대했던 것이지만, 여기에서는 보이지 않습니다. 실행중인 운영 체제 (버전 포함)를 물어볼 수 있습니까?
Quantumboredom 12

아치 리눅스 3.13.7-1. 시스템 버전 212.
elynnaie

2
나는 지금 주요 저널에서 출력을 본다. 하지만 실행하려고 할 때 journalctl --user내가 얻을 No journal files were found.그리고는 journalctl --user-unit chatty나를 위해 작동하지 않았다.
CMCDragonkai

6

네크로 포스팅 (Necroposting)이지만 오늘 같은 문제에 직면 해 해결했습니다. journalctl --user-unit chatty루트에서 실행하기 때문에 대부분 효과 가 없었습니다. 그러나 당은 man journalctl, --user-unit필터에 의해뿐만 아니라 항목 로그 _SYSTEMD_USER_UNIT=뿐만 아니라에 의해을 _UID=, 어떤이없는 chatty어떤 항목이 발견되지 않도록 서비스는 루트의 UID와 함께.

당신은 또한 journalctl --user-unit chatty당신의 평범한 사용자로부터 실행 을 시도했지만 아마도 얻었을 것 No journal files were found입니다. 이것은 (하기 때문에 발생하는 모든 사용자가 자신의 개인 사용자 별 저널에 대한 액세스 권한이 부여됩니다 에서 man journalctl여전히 기본적으로 지속되지 않습니다 내 데비안 9 journalctl에 2018 여기에 혼동 될 수있다 () Storage=auto에서 /etc/systemd/journald.conf, 그리고 /var/log/journal/존재하지 않는), 그리고 비에 지속 모드는 journald모든 로그에 한 곳에서 끝낼 수 있도록, 분할 로그를 지원하지 않습니다 /run/log/journal참조 - 분할이 기본적으로 설정되어 있다는 사실에도 불구하고 SplitMode에서 man journald.conf. 지속성을 활성화하면이 문제가 해결됩니다.

TL; DR은 : 바꾸어 지속성을 가능 Storage=persistent으로 /etc/systemd/journald.conf하고 journald로 다시로드 sudo systemctl restart systemd-journald.

또는 sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

자세한 내용은 https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html에 있습니다.


2
고맙습니다. 나는 점점 된 No journal files were opened due to insufficient permissions.사용 권한을 설정하는 방법에 대한 혼란 "힌트"를,하지만 난 액세스 사용자가 로그인하지 시스템 로그에 노력하고 있기 때문에이 권한을 설정 할 필요가 없습니다. 당신의 수정은 효과가 있었다. 많은 감사합니다.
Rolf

3

systemd v230까지는 덜 직관적 인 --user-unit플래그를 사용 하여 사용자 장치의 로그를보아야했습니다.

journalctl --user-unit chatty

systemd v230부터는 예상대로 --user--unit플래그를 결합 할 수 있습니다 .

journalctl --user --unit chatty

--user --unit구문은 Ubuntu 17.10부터 지원됩니다.


2
"-user-unit"기능은 v230에서 작동하지만 v232를 실행하는 것은 아닙니다.이 기능은 작동하지 않습니다.
LeGEC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.