Fedora

“org.gnome.Shell.desktop”是什麼意思171117111711:“在systemd日誌中的意思?

  • March 24, 2018
$ 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)
...

我將第一行理解為來自 PID 31408 的日誌消息,它是pkexec命令的一個實例。

但我 100% 確定我沒有在org.gnome.Shell.desktop任何地方呼叫的執行檔。確實存在具有該名稱的文件,但它是 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
  • gnome-session-3.26.1-1.fc27.x86_64

TL;DR:決定這樣做的是 GNOME Shell。他們在同一個程序中執行多個應用程序(小程序),因此他們決定使用 XDG 菜單規範作為附加到消息的“標籤”。

完整解釋如下…


因此,日誌綜合了您從與每條消息一起儲存的內部欄位中看到的類似 syslog 的消息。(您可以使用-o verbose格式查看內部欄位。)

通常帶有程序名稱的欄位,也就是“標籤”,儲存在SYSLOG_IDENTIFIER欄位中。

(其他程序使用 SYSLOG_IDENTIFIER。例如,logger預設情況下會從呼叫它的使用者發送標籤,您可以使用該-t選項覆蓋它。)

有 3 種主要的日誌記錄方式,或者使用傳統的syslog(3)介面,通過從 systemd 服務寫入 stdout 或 stderr,或者使用本機日誌介面。

GNOME Shell 使用本機日誌介面,特別是sd_journal_stream_fd API。該函式將標識符作為第一個參數,然後將其用作通過該流發送的消息的 SYSLOG_IDENTIFIER。

初始化 journald 流的 GNOME Shell 程式碼可以在src/shell-app.c中找到,並且追溯到appid呼叫者的 used 表明它是使用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 似乎是指 gnome-shell,即打開 stream_fd 的程序,而不是向 fd 寫入消息的子程序。下面的日誌消息顯示 Xwayland 伺服器崩潰,但 PID 3493 是 gnome-shell 的,而不是 Xwayland 的。

3 月 17 日 18:08:39 alan-laptop org.gnome.Shell.desktop

$$ 3494 $$: (EE) 擷取信號 7(匯流排錯誤)。伺服器中止

引用自:https://unix.stackexchange.com/questions/433178