其實是未能解決這個問題,而是索性把它整個停用了事。話說有一部安裝 RHEL 8 的工作站主機,平常的遠端檢查動作,基本上就是看能否正常 Wake-on-LAN 開機、SSH 登入,執行系統更新。然後視需要遠端重啟後,再確認依賴的驅動程式有跑起來,大概就是這些動作而已。然而近期有一次隨意地將 dmesg 指令的輸出結果叫出來看了一下,赫然發現有個 segfault。然後接著查看 /var/log/messages,才發現在看似一直可正常使用的情形下,其實系統背後有非常密集的錯誤記錄。
只要使用者在本機登入 GNOME 桌面環境後,用於提供桌面索引功能的 GNOME Tracker 就會開始出現服務啟動錯誤,首先訊息大概會是如下:
Jun 20 12:30:12 localhost kernel: tracker-extract[5770]: segfault at 7f18c0393ea8 ip 00007f18dd989bb3 sp 00007ffd567d7cd0 error 4 in libgio-2.0.so.0.5600.4[7f18dd8b3000+1a2000]
Jun 20 12:30:13 localhost systemd-coredump[5788]: Resource limits disable core dumping for process 5770 (tracker-extract).
Jun 20 12:30:13 localhost systemd-coredump[5788]: Process 5770 (tracker-extract) of user 1000 dumped core.
Jun 20 12:30:13 localhost systemd[5001]: tracker-extract.service: Main process exited, code=dumped, status=11/SEGV
Jun 20 12:30:13 localhost systemd[5001]: tracker-extract.service: Failed with result 'core-dump'.
Jun 20 12:30:13 localhost systemd[5001]: tracker-extract.service: Service RestartSec=100ms expired, scheduling restart
然後 tracker-extract 服務就會持續不間斷地想要啟動起來:
Jun 20 12:30:15 localhost systemd[5001]: tracker-extract.service: Start request repeated too quickly.
Jun 20 12:30:15 localhost systemd[5001]: tracker-extract.service: Failed with result 'signal'.
如此一來,倘若桌面環境登入了一整天,那麼系統日誌就會塞滿一整天的錯誤訊息,不是很妙。不過由於它看起來並不影響日常具體需要執行的工作任務,所以並沒有被發覺出來。也因為產生的錯誤訊息數目很多,更久遠的系統記錄早就被洗掉了,因此恐怕也追溯不出最早是從什麼時候開始有此情形。
於是在網路上嘗試找了幾種處置措施,卻都未能解決 tracker-extract 服務啟動失敗的問題。而且 RHEL 8(包含它所提供的 GNOME 版本)已是一個相對較舊的系統及軟體環境,不太能期待看到的解法對它而言是有用的。另一方面,其實另有一部同樣是 RHEL 8 的主機,基本上是作為相同的用途。不過並沒有發生同樣的狀況,GNOME 桌面登入後不會這樣子噴錯誤訊息在系統日誌裡。然而兩部主機細部差異不少,有此狀況的主機有安裝更多的第三方應用程式及驅動程式,所以除非刻意將兩部主機可見的差異弭平,否則恐怕也很難藉此釐清。
於是最終的定案是盡量不去更動現有的環境,畢竟並沒有影響到它現有的工作任務,求穩定就好。然而登入桌面環境後會一直噴錯誤訊息在系統日誌裡的狀況則得要處理掉,所以解決方案是停用 GNOME Tracker。不過似乎是此功能在 GNOME 裡的耦合程度甚深,並沒有非常單純的停用方式。最後是參照 Red Hat 知識庫文件(How to disable the Gnome tracker service),如以下步驟以 root 權限操作完畢後,再重啟系統,後續登入桌面就不會再反覆噴錯誤訊息出來:
- echo "Hidden=true" >> /etc/xdg/autostart/tracker-extract.desktop
- echo "Hidden=true" >> /etc/xdg/autostart/tracker-miner-apps.desktop
- echo "Hidden=true" >> /etc/xdg/autostart/tracker-miner-fs.desktop
- echo "Hidden=true" >> /etc/xdg/autostart/tracker-miner-user-guides.desktop
- echo "Hidden=true" >> /etc/xdg/autostart/tracker-store.desktop
- dbus-launch --exit-with-session gsettings set org.freedesktop.Tracker.Miner.Files crawling-interval -2
- dbus-launch --exit-with-session gsettings set org.freedesktop.Tracker.Miner.Files enable-monitors false
- yes | LANG=C tracker reset --hard
- sed -i 's/X-GNOME-Autostart-enabled=.*/X-Gnome-Autostart-enabled=false/' /etc/xdg/autostart/tracker-store.desktop