Как я могу предотвратить .xsession-errors не использовать дисковое пространство?

12

Есть ли способ полностью отключить файл .xsession-errors? Я использую его как символическую ссылку на / tmp, чтобы жесткий диск моего ноутбука мог (надеюсь) один раз засыпать, но, по крайней мере, 95% содержимого файла (оно заполняется со скоростью около 500 КБ в час) ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: утверждение `G_VALUE_HOLDS_OBJECT (значение) 'не выполнено

что для меня полная чушь. Я попытался создать символическую ссылку на / dev / null, но это не работает (результирующая ссылка перезаписывается), и я также не хочу выполнять эту операцию, так что, надеюсь, мой ноутбук на этот раз может заснуть.

Я использую Ubuntu 11.04 без специальных надстроек для Nautilus.

bjem
источник
Этот трюк не работает для меня, потому что при запуске /etc/X11/Xsessionне проверяет, на что указывает символическая ссылка. Для меня это создает новый .xsession-errorsобычный файл и имеет .xsession-errors.oldссылку на /dev/null. Это не то, что я хочу. Я хочу .xsession-errorsперенаправить на /dev/null- постоянно, если я сам не изменю это явно.
BJEM
Просто чтобы уточнить @ j-johan-edwards. Я проверил вашу команду, и она отлично работает, я просто хочу, чтобы она была постоянной.
BJEM
11.04 использует GDM или LightDM в качестве диспетчера дисплея?
детально
Я думаю, что мой GDM, если это по умолчанию. Я не изменил его, кроме как уйти от рабочего стола Unity.
BJEM
Да, мой GDM. Очевидно, что путь к нему .xsession-errorsжестко закодирован (?!) в его исходный код. Есть хороший способ запустить скрипт после GDM нагрузки для перенаправления .xsession-errorsна /dev/null?
12:36

Ответы:

10

Я нашел временное решение.

Я поместил небольшой скрипт в /etc/X11/Xsession.dnamed, 91redirect-xsession-errorsкоторый сейчас выполняет эту работу, но если вы хотите иметь собственную пользовательскую символическую ссылку, .xession-errorsона не работает для этого (я пытался и не выводил никаких данных).

#! / Bin / ш

# Перенаправить $ HOME / .xsession-errors в / dev / null.
№ BJEM 11 января 2012 г.

XSESSION_ERRFILE = $ HOME / .xsession-ошибки

# Это не похоже на обычный файл,
# т.е. если вы хотите использовать символическую ссылку $ HOME / .xsession-errors
# в другой файл. Я не знаю почему.
XSESSION_ERRFILE_FINAL = / DEV / нуль

# Создает целевой файл, если он не существует.
нажмите "$ XSESSION_ERRFILE_FINAL"

# Связать файл .xsession-errors с желаемой целью
# не важно что.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Прецедент.
#gedit &

##### КОНЕЦ ФАЙЛА #####

Это немного "грубо и готово", но это делает работу для меня. Обратите внимание, что это единственный файл, который был изменен.

bjem
источник
К сожалению, я не заметил ответа @earlonrails. / etc / X11 / Xsession создаст файл в / tmp, если это символическая ссылка, поэтому этот метод бесполезен.
int_ua
4

Существует файл с именем / etc / X11 / Xsession. Который создаст символическую ссылку на файл tmp. IE. Начинается по строке № 61

ERRFILE=$HOME/.xsession-errors

# attempt to create an error file; abort if we cannot
if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] &&
  [ ! -L "$ERRFILE" ]; then
  chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
    message "warning: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
             "\"$ERRFILE\"; look for session log/errors in" \
             "\"$TMPDIR/xsession-$USER\"."
  fi
else
  errormsg "unable to create X session log/error file; aborting."
fi

Вы можете скопировать этот файл Xsession в Xsession.bak. Затем идите головой и укажите свой ERRFILE на / dev / null IE. Линия 83

exec >> /dev/null 2>&1
earlonrails
источник
Спасибо! Жаль, что я не заметил этот ответ ранее. Я награжу вас 200 репутацией. Я сделал патч, который проверяет переменную окружения $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p таким образом, что мы можем надеяться сделать это апстрим.
int_ua
1
Большое спасибо! Это было большой проблемой для меня много лет назад, когда я работал в компании, которая производила киоски. Мы запускали их с компактных флэш-карт, обычно используемых для камер. Эти карты будут иметь только определенное количество записей, прежде чем они не смогут записать на карты. Поэтому удаление файла много раз, как предлагают некоторые другие, только усугубляет проблему.
Earlonrails
Здесь также есть повторяющийся вопрос с моим ответом askubuntu.com/questions/177058/…
earlonrails
Я сделал запрос на слияние с ближайшей вещью, которую я смог найти в апстриме : salsa.debian.org/xorg-team/xorg/merge_requests/7 Пожалуйста, добавьте свою историю о киосках там.
int_ua
0

Я столкнулся с той же проблемой на сервере redhat linux 6.4, но я могу определить, какая папка или пользователь занимает больше места, с помощью этой команды "find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" Затем я удалил вручную x ошибок сеанса с помощью команды rm -rf

user320929
источник
1
Этот ответ не говорит, как остановить ошибки. Это только говорит, как удалить их. Пожалуйста, обновите свой ответ.
Каз Вулф
0

Обратите внимание, что удаление файла .xsession-errors не освобождает место до перезагрузки системы, если процесс все еще выполняет запись в файл. Используйте echo, чтобы перезаписать содержимое файла, чтобы установить для файла один символ. Пока процесс записи в .xsession-errors не остановится, файл снова начнет расти. Я должен остановить Remmina, затем обрезать файл, и я вернулся к работе. Примечание также помогает, если вы установите предельный размер файла в несколько гигабайт, чтобы ваш файл .xsession-errors не мог подать на диск и привести к сбою системы. Все еще ищу ответ на эту проблему вируса, встроенного, по-видимому, во все операционные системы Linux. Звучит так, будто разработчики Microsoft вносят свой вклад в Linux ... ;-)

dneill
источник
>.xsession-errors, :>.xsession-errors Другие хорошие способы обнуления файла.
Earlonrails