У большинства пользователей .xsession-errors файл растет, потому что gtk и другие библиотеки выдают глупые сообщения об ошибках.

Есть ли способ уменьшить глупые сообщения об ошибках, но есть полезный файл .xsession-errors?

1 ответ1

0

Да, это возможно. Это решение было протестировано с Debian jessie и wdm качестве логина-менеджера.

Для этого необходимо выполнить несколько шагов:
Шаги с 8 по 10 зависят от wdm и могут выглядеть по-разному для gdm или kdm

  1. войдите как root
  2. открыть файл /etc/X11/Xsession в редакторе
  3. заменить первую строку в файле
    #!/bin/sh
    с
    #!/bin/bash
  4. найдите строку ERRFILE=$HOME/.xsession-errors и добавьте ниже строки ERRFILTER=$HOME/.xsession-errors_filter
  5. найдите строку exec >>"$ERRFILE" 2>&1 и замените ее на
    if [ -f $ERRFILTER ]; then exec > >(stdbuf -i0 -o0 -e0 grep -v -f "$ERRFILTER" >>"$ERRFILE") 2>&1 else exec >>"$ERRFILE" 2>&1 fi
  6. сохранить файл и выйти из редактора
  7. создайте файл .xsession-errors_filter в своем домашнем каталоге и запишите в нем ключевые слова из сообщений об ошибках, которые вы не хотите видеть. Допускается только одно ключевое слово / фраза на строку.
  8. открыть файл / etc / X11 / wdm / Xsession
  9. найдите строку . /etc/X11/Xsession и замените его на exec /etc/X11/Xsession
  10. сохранить файл
  11. перепроверьте, все ли правильно, потому что X11 может не запуститься иначе
  12. выйти и войти в X

некоторые объяснения:

  • нам нужно bash для этого времени перенаправления для замены /bin /sh и изменения из . (источник) для исполнения
  • тогда мы используем инвертированный grep для фильтрации. grep читает ключевые слова фильтра из файла .xsession-errors_filter
  • stdbuf отключает буферизацию с помощью grep, поэтому сообщения об ошибках немедленно записываются в файл
  • exec > >() перенаправляет весь вывод из оболочки в подоболочку (которая запускает grep)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .