我遇到了一个问题,我的~/.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
。