如何防止 .xsession 错误占用磁盘空间?

如何防止 .xsession 错误占用磁盘空间?

有什么方法可以完全禁用 .xsession-errors 文件?我将其作为 /tmp 的符号链接,以便我的笔记本电脑硬盘可以(希望)进入一次休眠状态,但文件中至少 95% 的内容(每小时约 500k 填满)是...

(nautilus:1618): GLib-GObject-CRITICAL **: g_value_get_object: 断言“G_VALUE_HOLDS_OBJECT (value)”失败

对我来说这完全是垃圾。我尝试过建立一个指向 /dev/null 的符号链接,但不起作用(结果链接被覆盖),而且我也不想进行这种活动,希望我的笔记本电脑可以暂时进入睡眠状态。

我正在使用 Ubuntu 11.04,没有对 Nautilus 进行任何特殊的附加组件。

答案1

我找到了一个临时的解决方案。

我放入了一个小脚本/etc/X11/Xsession.d91redirect-xsession-errors它现在完成了这项工作,但是如果你想拥有自己的自定义符号链接,.xession-errors它就不起作用(我试过了,但它没有输出任何数据)。

/bin/sh #!/bin/sh 复制代码

# 将 $HOME/.xsession-errors 重定向到 /dev/null。
# BJEM 2012 年 1 月 11 日

XSESSION_ERRFILE=$HOME/.xsession 错误

# 这似乎不适用于常规文件,
# 例如,如果你想要符号链接 $HOME/.xsession-errors
# 到另一个文件。我不知道为什么。
XSESSION_ERRFILE_FINAL=/dev/null

# 如果目标文件不存在则创建它。
触摸“$XSESSION_ERRFILE_FINAL”

# 将 .xsession-errors 文件链接到所需目标
# 不管怎样。
ln -sf "$XSESSION_ERRFILE_FINAL" "$XSESSION_ERRFILE"

# 测试用例。
#gedit &

##### 文件结束 #####

它有点“粗糙”,但对我来说还是够用的。请注意,这是仅有的已被改变的文件。

答案2

有一个名为 /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

答案3

如果您仍然需要一个可以保存日志并具有适当轮换的解决方案(对于任何记录的数据都应该如此)。

以下是我的方法:

代替

exec >>"$ERRFILE" 2>&1

exec > >(logger -t xsession-$USER) 2>&1

/etc/X11/Xsession文件中

/var/log/syslog这会将所有日志发送到本地 syslog 服务器,该服务器可以默认将日志发送到文件,并具有适当的 logrotate 规则

或者,您可以使用 syslog 配置将这些消息路由到单独的文件,并为其制定单独的 logrotate 规则。

答案4

这个问题困扰着我使用 Arch KDE、Neon KDE 以及现在的 MX KDE。我主要担心的是日志文件浪费了我的 SSD 写入,因为我喜欢长时间运行,而这个问题随着时间的推移而加剧。几天后,它会加速并浪费我的写入。

  1. 我已将其放入我的系统中/etc/fstab以创建一个 10MB RAM 驱动器。
tmpfs   /media/mkey/tmp tmpfs   size=10000000   0       0
  1. 我已经a mkey_custom.sh在主目录中创建了脚本
#!/bin/bash

touch /media/mkey/tmp/.xsession-errors
touch /media/mkey/tmp/.xsession-errors.old

ln -sf /media/mkey/tmp/.xsession-errors /home/mkey/.xsession-errors
ln -sf /media/mkey/tmp/.xsession-errors.old /home/mkey/.xsession-errors.old
  1. 我已经创建了一个mkey_custom.service文件
[Unit]
Description=mkey custom service

[Service]
Type=simple
ExecStart=/bin/bash /home/mkey/mkey_custom.sh

[Install]
WantedBy=basic.target
  1. 最后,为了安装并运行服务,我使用了以下命令
cp mkey_custom.service /etc/systemd/system/mkey_custom.service
chmod 644 /etc/systemd/system/mkey_custom.service
systemctl enable mkey_custom.service

我发现我需要将脚本作为服务运行,因为在启动时运行它太晚了。操作系统已经开始写入 /home 位置,因此此时任何重定向都是徒劳的。

如果重新启动后我检查/home/mkey/.xsession-errors文件属性,我将看到它现在指向我想要的位置/media/mkey/tmp/.xsession-errors并且正在被写入。

相关内容