防止 xsession 错误

防止 xsession 错误

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

我读过一些关于如何通过 cron 删除文件或将其重定向到的解决方案/dev/null。但我担心的是,我的家在 SSD 上,我不想用一堆我不想要的写入来浪费驱动器 i/o。

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

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

答案1

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

删除(或滥用)该文件不是永久的解决方案,因为会话设置为在登录时重新创建此文件。不过,您有几种处理方法。

对于虐待狂来说:打破全部这些事!

您可以通过运行sudoedit /etc/X11/Xsession并查找关于 的部分来打破这种行为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)"

对于长期登录用户:cron

我每次登录电脑桌面好几个星期,如果出现问题,我可能只需要调试几个小时,甚至根本不需要调试。所以我运行crontab -e并创建了如下一行:

0 * * * * bash -c ">/.xsession-errors"

这只是为文件提供了每小时一次的结肠。

对于受虐狂:修复全部虫子!

您必须记住,.xsession-error输出是为了指示错误或某些行为不应该发生。这并不总是正确的(怒视 KDE),但对于您的 VNC 客户端来说,这可能表明出现了问题。

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

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

答案2

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

相关内容