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

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

(nautilus:1618): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value)' failed

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

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

12
задан 26 June 2012 в 01:26

5 ответов

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

0
ответ дан 26 June 2012 в 01:26

Существует файл с именем / 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
0
ответ дан 26 June 2012 в 01:26

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

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

#!/bin/sh

# Redirect $HOME/.xsession-errors to /dev/null.
# BJEM 11 January 2012

XSESSION_ERRFILE=$HOME/.xsession-errors

# This does not seem to work for a regular file,
# i.e. if you want to symlink $HOME/.xsession-errors
# to another file.  I do not know why.
XSESSION_ERRFILE_FINAL=/dev/null

# Creates target file if it does not exist.
touch "$XSESSION_ERRFILE_FINAL"

# Link .xsession-errors file to the desired target
# no matter what.
ln -sf "$XSESSION_ERRFILE_FINAL" "$XSESSION_ERRFILE"

# Test case.
#gedit &

##### END OF FILE #####

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

0
ответ дан 26 June 2012 в 01:26

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

0
ответ дан 26 June 2012 в 01:26

В случае, если вам все еще нужно решение, которое ведет журналы и имеет правильную ротацию (как и должно быть для любых зарегистрированных данных).

Вот мой подход:

заменить

exec >>"$ERRFILE" 2>&1

на

exec > >(logger -t xsession-$USER) 2>&1

в файле /etc/X11/Xsession

Это отправит все журналы на локальный сервер системных журналов, который может отправлять журналы в файл /var/log/syslog по умолчанию и иметь соответствующие правила logrotate

В качестве альтернативы вы можете направить эти сообщения в отдельный файл, используя конфигурацию syslog и иметь для него отдельные правила logrotate вообще.

1
ответ дан 30 November 2020 в 20:31

Другие вопросы по тегам:

Похожие вопросы: