当我启动 Raspberry Pi3 (4.14.34-v7+) 时,启动后在 dmesg 和其他日志中发现以下错误。但是,我当前没有使用triggerhappy
,因此可能会禁用该服务。但如果我将来想使用,我想知道是什么导致了该错误。
systemd-udevd[157]: Process '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' failed with exit code 1.
systemd 服务中有两个条目:
systemctl status triggerhappy.service
systemctl status triggerhappy.socket
尝试执行的代码似乎来自
/lib/udev/rules.d/60-triggerhappy.rules
::
为什么在启动过程中会失败?
(不过好像要稍后运行...)
答案1
为什么:此错误是由多种原因引起的:
1)该命令th-cmd --socket /var/run/thd.socket --passfd --udev
生成一个segfault
.这似乎是因为 triggerhappy 尚未修复以解决过去 4 年报告的许多问题......
2)不幸的是,即使您禁用triggerhappy,错误仍然会出现在系统日志中,例如:
$ sudo systemctl disable triggerhappy.service
$ sudo systemctl disable triggerhappy.socket
这是因为禁用 triggerhappy 不会删除此处的 udev 规则:/lib/udev/rules.d/60-triggerhappy.rules
。
解决方案(如果你不使用triggerhappy - 就像在无头系统上一样):
$ sudo apt-get remove triggerhappy
答案2
正如@所指出的迦勒不幸的是,该服务似乎存在一个长期存在的错误triggerhappy
。但是,如果您希望triggerhappy happy 守护进程考虑新事件源(可能来自在启动期间或启动后连接到计算机的设备)触发的事件,则 udev 规则可能会很有用。要解决此错误,您可以将文件RUN
中的行替换60-triggerhappy.rules
为以下内容:
RUN+="/bin/systemctl restart triggerhappy"