Есть ли способ полностью отключить файл .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.
Обратите внимание, что удаление файла .xsession-errors не освобождает место до перезагрузки системы, если процесс все еще выполняет запись в файл. Используйте echo, чтобы перезаписать содержимое файла, чтобы установить для файла один символ. До тех пор, пока процесс записи в .xsession-errors не прекратится, файл сразу же снова начнет расти. Я должен остановить Remmina, затем обрезать файл, и я вернулся к работе. Примечание также помогает, если вы установите предельный размер файла в несколько гигабайт, чтобы ваш файл .xsession-errors не мог подать диск и привести к сбою системы. Все еще ищу ответ на эту проблему вируса, встроенного, по-видимому, во все операционные системы Linux. Звучит так, будто разработчики Microsoft вносят свой вклад в Linux ...; -)
Существует файл с именем / 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
Я нашел временное решение.
Я поместил небольшой сценарий в /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 #####
Это немного «грубо и готово», но это делает работу за меня. Обратите внимание, что это только файл , который был изменен.
Я столкнулся с той же проблемой на сервере redhat linux 6.4, но я могу найти, какая папка или пользователь занимает больше места, используя эту команду "find / -xdev -type f -size + 100000000c -exec ls -lh {} \ ; " затем я вручную удалил x ошибок сеанса с помощью команды rm -rf
В случае, если вам все еще нужно решение, которое ведет журналы и имеет правильную ротацию (как и должно быть для любых зарегистрированных данных).
Вот мой подход:
заменить
exec >>"$ERRFILE" 2>&1
на
exec > >(logger -t xsession-$USER) 2>&1
в файле /etc/X11/Xsession
Это отправит все журналы на локальный сервер системных журналов, который может отправлять журналы в файл /var/log/syslog
по умолчанию и иметь соответствующие правила logrotate
В качестве альтернативы вы можете направить эти сообщения в отдельный файл, используя конфигурацию syslog и иметь для него отдельные правила logrotate вообще.