Як я можу запобігти помилкам .xsession від поїдання місця на диску?


12

Чи є якийсь спосіб повністю відключити файл .xsession-error? Я маю це як посилання на / tmp, щоб жорсткий диск мого ноутбука міг (сподіваємось) один раз перейти до сну, але принаймні 95% матеріалів у файлі (він заповнюється близько 500 к на годину) - це ...

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

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

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


Цей трюк для мене не працює, оскільки при запуску /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?
bjem

Відповіді:


10

Я знайшов тимчасове рішення.

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

#! / бін / ш

# Перенаправлення $ HOME / .xsession-помилки на / dev / null.
№ BJEM 11 січня 2012 року

XSESSION_ERRFILE = $ HOME / .xsession-помилки

# Схоже, це не працює для звичайного файлу,
# тобто, якщо ви хочете символізувати $ HOME / .xsession-помилки
# в інший файл. Я не знаю чому.
XSESSION_ERRFILE_FINAL = / dev / null

# Створює цільовий файл, якщо його не існує.
торкніться "$ XSESSION_ERRFILE_FINAL"

# Посилання файлу .xsession-помилок до потрібної цілі
# незважаючи ні на що.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Тестовий випадок.
#gedit &

##### Кінець файлу #####

Це трохи "грубо і готово", але це робить роботу для мене. Зауважте, що це єдиний змінений файл.


На жаль, я не помітив відповіді @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

Дякую! Я б хотів, щоб я помітив цю відповідь раніше. Я нагороджу вас 200 репутацією. Я зробив виправлення, що перевіряє змінні середовища $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p таким чином, ми можемо сподіватися зробити це вище за течією.
int_ua

1
Дуже дякую! Це було великим питанням для мене років тому, коли я працював у компанії, яка робила кіоски. Ми запускали їх із компактних флеш-карт, зазвичай використовуваних для камер. Ці картки мали б лише певну кількість записів до них, перш ніж вони не зможуть записати на картки. Тому видалення файлу багато разів, як вважають деякі інші, лише погіршує проблему.
вушні перила


Я зробив запит на об'єднання у найближче, що я міг би знайти в потоці : 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


1
Ця відповідь не говорить ЯК зупинити помилки. Це лише говорить про те, як їх видалити. Будь ласка, оновіть свою відповідь.
Каз Вулф

0

Зауважте, що видалення файлу .xsession-error не звільняє місця до перезавантаження системи, якщо процес все ще записується у файл. Використовуйте ехо, щоб перезаписати вміст файлу, щоб встановити файл на один символ. До запису процесу до .xsession-помилок зупиняється, що файл почне знову рости. Мені я повинен зупинити Remmina, а потім урізати файл, і я повернусь до запуску. Примітка також допомагає, якщо ви встановите обмеження розміру вашого файлу на кілька гігів, щоб ваш файл .xsession-помилок не міг подати диск та зірвати систему. Ще шукаю відповідь на цю проблему вірусу, вбудованого у всі видимо операційні системи Linux. Начебто розробники Microsoft внесли свій внесок у Linux ... ;-)


>.xsession-errors, :>.xsession-errors є інші хороші способи зняти з нуля файл.
вушні перила
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.