防止 xsession 错误

ATL*_*ris 6 12.10

我的~/.xsession-errors文件在几天内填满了我的整个驱动器 (128G)时遇到问题。事实上,一次是在几个小时内。我将这台机器作为服务器运行,因此它可以运行数天而无需重新启动。

我已经阅读了一些有关如何通过 cron 删除文件或将其重定向到/dev/null. 但我担心的是,我的家在 SSD 上,我不想浪费驱动器 i/o 进行一堆我不想要的写入。

我怎样才能防止它写?另外,如果有人能解释这个文件是什么,以及为什么它有这么多错误,我将不胜感激。是否与我的远程会话 vnc/ssh 有关。

更新:每次我使用“桌面共享”远程 VNC 时,它的大小似乎都会增加。

Oli*_*Oli 2

这对于调试某些应用程序来说是一个有用的工具,但在某些情况下(大多数 KDE 就是一个典型的例子)你最终会得到太多的东西。

删除(或以其他方式滥用)该文件不是永久解决方案,因为会话设置为在登录时重新创建该文件。不过,您有几种选择来处理它。

对于虐待狂来说:打破一切

您只需运行sudoedit /etc/X11/Xsession并查找有关 about 的部分即可打破该行为ERRFILE。显然首先要进行备份,但我想说你可以注释(在每行前面加上#)或删除以下所有代码:

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

# truncate ERRFILE if it is too big to avoid disk usage DoS
if [ "`stat -c%s \"$ERRFILE\"`" -gt 500000 ]; then
  T=`mktemp -p "$HOME"`
  tail -c 500000 "$ERRFILE" > "$T" && mv -f "$T" "$ERRFILE" || rm -f "$T"
fi

exec >>"$ERRFILE" 2>&1

echo "$PROGNAME: X session started for $LOGNAME at $(date)"
Run Code Online (Sandbox Code Playgroud)

对于长时间登录的用户:cron

我一次会在桌面上保持登录状态数周,如果出现问题,很可能我只需要调试几个小时(如果有的话)。所以我运行crontab -e并创建了这样一行:

0 * * * * bash -c ">/.xsession-errors"
Run Code Online (Sandbox Code Playgroud)

这只是为文件提供了每小时的冒号。

对于受虐狂:修复所有错误!

您必须记住,.xsession-error输出是为了指示错误或某些行为不应该的行为。这并不总是正确的(瞪着 KDE),但就您的 VNC 客户端而言,这可能表明出现了问题。

如果您查看了错误,则可以更改应用程序设置以避免错误,或者如果失败,请将错误(以及一些示例消息)报告给软件的作者。

如果它只是垃圾邮件(例如:“连接到服务器”),也将其作为错误报告给作者。他们滥用基础设施。


小智 0

有一个更简单的解决方案,但对某些人来说可能不太有用。不要使用 xdm 或任何其他 DM。将您的计算机启动到文本控制台,登录并startx.