有什么方法可以完全禁用 .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.d
,91redirect-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 写入,因为我喜欢长时间运行,而这个问题随着时间的推移而加剧。几天后,它会加速并浪费我的写入。
- 我已将其放入我的系统中
/etc/fstab
以创建一个 10MB RAM 驱动器。
tmpfs /media/mkey/tmp tmpfs size=10000000 0 0
- 我已经
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
- 我已经创建了一个
mkey_custom.service
文件
[Unit]
Description=mkey custom service
[Service]
Type=simple
ExecStart=/bin/bash /home/mkey/mkey_custom.sh
[Install]
WantedBy=basic.target
- 最后,为了安装并运行服务,我使用了以下命令
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
并且正在被写入。