Debian Jessie,Xfce4 版本。 4.10,HPLIP 版本。 3.14.6
从 Debian Wheezy 升级到 Jessie 后(是的,我知道......),开始在启动日志中收到以下(级别 1/警报)通知:
hp-systray[PID]: error: option -s not recognized
对主题日志条目的仔细检查表明,/usr/bin/python /usr/bin/hp-systray -session ....
在登录过程中的某个时刻曾尝试过该命令。在终端中运行上述命令确实会产生主题错误尖叫声。事实证明这-session
不是该命令的有效开关......
运行 Wheezy 时从未见过上述通知。
互联网研究发现,这个问题似乎相对罕见,看似无害,已经存在了至少 10 年,而且从未得到解释。
我注意到,如果我hp-systray
在关闭之前终止进程,则问题不会在后续启动时出现,但会在任何后续启动时返回,而之前没有所述“终止”操作。
有任何想法吗?
答案1
一些实验表明,主题日志尖叫声与 Xfce4 会话管理器在登录时引用的文件中的一行相关~/.cache/sessions/xfce4-session-$HOSTNAME:0
(为了清楚起见,在此复制了该行后面的行):
Client6_RestartCommand=/usr/bin/hp-systray,-session,23775cb5c-d4da-45ef-9d25-410c10c6a78b_1597436809_471656
Client6_Program=/usr/bin/hp-systray
显然,所述会话管理器将hp-systray
进程包含到它保存的数据中,以保留会话。我仍然有一些运行 Wheezy 的具有类似软件包套件的计算机,并且发现它们上的会话管理器永远不会保存进程。但是,会话管理器确实将上述过程保存在 Jessie 的控制下,但结果并不理想。
如果为用户提供一种方法来排除 Xfce4 会话管理器保留的特定进程,那肯定会很好......
与此同时,我拼凑了一个不优雅但有效的解决方法。
我编写了一个最小的服务文件,名为stop_the_madness.service
:
[Unit]
Description=Digger add, prevents hp-systray log alert on next boot
After=syslog.service
[Service]
ExecStart=/bin/bash -c "sed -i 's/\/usr\/bin\/hp-systray/\/bin\/true/g;s/-session//' /home/$USER/.cache/sessions/xfce4-session-$HOSTNAME:0"
[Install]
WantedBy=default.target
将新创建的服务文件放入该/etc/systemd/system
目录中,然后chmod 644 /etc/systemd/system/stop_the_madness.service
.然后我做了一个systemctl daemon-reload
,然后是systemctl enable stop_the_madness.service
从现在开始,当引导过程到达登录时,有问题的~/.cache/xfce4-session-$HOSTNAME:0
文件中的有问题的行看起来像(带有以下行):
Client6_RestartCommand=/bin/true,,2ba711268-faee-473f-a6ce-dfb1efcff056_1597378561_935995
Client6_Program=/bin/true
问题结束(无论如何,对于重新启动、关闭和停止)。
更新:升级到 Debian Stretch 后,我开始看到以下引导日志警告:(...Invalid escape sequences in line, correcting:...
不确定 Jessie 是否抛出此警告)。正如所见使用“忽略未知转义序列”阻止 systemd 淹没日志,我只是将(在“ExecStart”行中)所有单反斜杠转义符替换为双反斜杠转义符:
ExecStart=/bin/bash -c "sed -i 's/\\/usr\\/bin\\/hp-systray/\\/bin\\/true/g;s/-session//' /home/dg/.cache/sessions/xfce4-session-2011:0"
问题结束。