![如何使用Triggerhappy守护进程覆盖文件](https://linux22.com/image/171257/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Triggerhappy%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E8%A6%86%E7%9B%96%E6%96%87%E4%BB%B6.png)
我安装了 Rpi4 和 Volumio 2.729。当按下键盘按钮时,我使用 Triggerhappy 运行 node.js 脚本 - 该脚本将播放相应的互联网广播电台:
module.paths.push('/lib/node_modules');
var io=require('socket.io-client');
var socket= io.connect('http://127.0.0.1:3000');
socket.on('connect',function(){
socket.emit('replaceAndPlay', {"service":"webradio","uri":"http://185.85.28.148:8000"});
});
此外,当同时按下按钮和“M”键时,Triggerhappy 将运行 .js 脚本,将当前播放的电台绑定到该按钮 - 它的工作原理是获取 volumio 的状态并替换 .js 脚本中的 URI(来自上面的示例)绑定到该按钮fs.writeFile().
我的问题是,Triggerhappy 无法覆盖 .js 文件。当我从终端手动运行此脚本时,它运行良好。
我设法以 root 身份运行 Triggerhappy,但没有帮助。我怎样才能让Triggerhappy覆盖文件,或者有更优雅的解决方案?
编辑:这是输出sudo systemctl状态triggerhappy.service -l
● triggerhappy.service - LSB: triggerhappy hotkey daemon
Loaded: loaded (/etc/init.d/triggerhappy)
Active: active (running) since Thu 2020-04-16 19:58:25 CEST; 4min 44s ago
Process: 640 ExecStart=/etc/init.d/triggerhappy start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/triggerhappy.service
├─ 698 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2415 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2416 sh -c node /home/volumio/node-stream/play_uri_1-node.js
├─2417 node /home/volumio/node-stream/play_uri_1-node.js
├─2636 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2637 sh -c node /home/volumio/node-stream/play_uri_2-node.js
└─2638 node /home/volumio/node-stream/play_uri_2-node.js
没有关于 memory.js 的条目,该脚本是在 play_uri_x-node.js 中写入的脚本
答案1
默认情况下triggerhappy
应该运行为nobody
.一种解决方法是nobody
通过编辑 sudo 文件授予调用特定命令的权限。但不必使用 root,如果您的普通用户可以运行该脚本就足够了。
在您的triggerhappy 配置中,验证您是否具有脚本的完全限定路径。
最后但并非最不重要的一点是,检查您的日志文件(syslog
,可能还有 中的其他文件/var/log
)。