systemd 로그의 "org.gnome.Shell.desktop[1711]:"은 무엇을 의미합니까?

systemd 로그의 "org.gnome.Shell.desktop[1711]:"은 무엇을 의미합니까?
$ journalctl -b
...
Mar 23 18:18:50 alan-laptop pkexec[31408]: pam_unix(polkit-1:session): session opened for user root by (uid=1001)
Mar 23 18:19:47 alan-laptop org.gnome.Shell.desktop[1711]: libinput error: client bug: timer event5 debounce short: offset negative (-3ms)
...

pkexec첫 번째 줄은 이 명령의 인스턴스 인 PID 31408의 로그 메시지로 이해됩니다 .

org.gnome.Shell.desktop그러나 나는 실행 파일을 어디에서나 호출 하지 않을 것이라고 100% 확신합니다 . 해당 이름을 가진 파일이 존재하지만 이는 XDG 데스크톱 파일입니다.

$ find -xdev -name 'org.gnome.Shell.desktop*' 2>/dev/null
./usr/share/applications/org.gnome.Shell.desktop
$ ls -l ./usr/share/applications/org.gnome.Shell.desktop
-rw-r--r--. 1 root root 8179 Jan 22 10:19 ./usr/share/applications/org.gnome.Shell.desktop

질문

이 로그 메시지가 표시되지 않는 이유는 무엇입니까 gnome-shell[1711]?

이것은 어떻게 구현됩니까?

이것이 더 유용할 것이라고 생각하는 사람이 있나요? 그렇다면 왜 그렇습니까?

환경

페도라 27

  • systemd-234-10.git5f8984e.fc27.x86_64
  • 그놈 세션-3.26.1-1.fc27.x86_64

답변1

요약: GNOME Shell은 이를 수행하기로 결정했습니다. 그들은 동일한 프로세스 내에서 여러 애플리케이션(애플릿)을 실행하고 있었기 때문에 XDG 메뉴 사양을 메시지에 첨부된 "레이블"로 사용하기로 결정했습니다.

전체 설명은 아래에...


따라서 로그는 각 메시지와 함께 저장된 내부 필드에서 볼 수 있는 syslog와 유사한 메시지를 합성합니다. (형식을 사용하여 내부 필드를 볼 수 있습니다 -o verbose.)

일반적으로 "레이블"이라고도 하는 프로그램 이름이 포함된 필드가 다음 위치에 저장됩니다.syslog_identifier대지.

(다른 프로그램에서는 SYSLOG_IDENTIFIER를 사용합니다. 예를 들어 logger기본적으로 레이블은 레이블을 호출하는 사용자로부터 전송되며 -t이 옵션을 사용하여 레이블을 재정의할 수 있습니다.)

로그인하는 방법에는 크게 세 가지가 있습니다. 기존 방법 사용시스템 로그(3)인터페이스, systemd 서비스에서 stdout 또는 stderr에 쓰거나 기본 로깅 인터페이스를 사용하여.

그놈 쉘은 특히 기본 로깅 인터페이스를 사용합니다.sd_journal_stream_fdAPI. 이 함수는 식별자를 첫 번째 매개변수로 사용하며, 이는 스트림을 통해 전송된 메시지에 대한 SYSLOG_IDENTIFIER로 사용됩니다.

로그 스트림을 초기화하는 그놈 쉘 코드는 다음에서 찾을 수 있습니다.src/shell-app.c, appid호출자까지 추적된 사용은 다음을 사용하여 설정되었음을 보여줍니다.g_app_info_get_id.

g_app_info_get_id를 찾아보면 ID가 플랫폼별로 다르지만 "Unix에서는 xdg 메뉴 사양의 데스크톱 파일 ID"라는 것을 알 수 있으며 이는 관찰한 것과 일치합니다.

src/shell-app.c의 코드 앞에는 근거를 설명하는 주석이 있습니다.

/* This sets up the launched application to log to the journal
 * using its own identifier, instead of just "gnome-session".
 */

즉, GNOME Shell은 (애플릿을 통해) 여러 응용 프로그램을 실행하므로 GNOME Shell 개발자는 로그 메시지에서 XDG 메뉴 사양을 사용하여 어떤 애플릿이 생성되는지 알 수 있도록 하는 것이 더 적절할 것이라고 생각했습니다.... ..


이러한 로깅 스트림은 Xwayland와 같은 모든 하위 프로세스에서 상속될 수도 있습니다. 이 경우 레이블 뒤의 PID는 fd에 메시지를 쓰는 하위 프로세스가 아니라 stream_fd를 여는 프로세스인 gnome-shell을 참조하는 것으로 보입니다. 다음 로그 메시지는 Xwayland 서버가 충돌했음을 보여 주지만 PID 3493은 Xwayland가 아닌 gnome-shell의 PID입니다.

3월 17일 18:08:39 alan-laptop org.gnome.Shell.desktop[3494]: (EE) 신호 7을 포착했습니다(버스 오류). 서버가 중단되었습니다

관련 정보