Raspberry-Pi

如何使用 Triggerhappy 守護程序覆蓋文件

  • April 16, 2020

我安裝了帶有 Volumio 2.729 的 Rpi4。當按下鍵盤按鈕時,我使用 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 status 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 中寫入的腳本

預設情況下triggerhappy應該執行為nobody. 一種解決方法是nobody通過編輯您的 sudo 文件來授予呼叫特定命令的權限。但是不需要使用root,如果可以執行腳本,您的普通使用者就足夠了。

在您的 triggerhappy 配置中,驗證您是否擁有腳本的完全限定路徑。

最後但並非最不重要的一點是,檢查您的日誌文件(syslog可能還有其他文件/var/log)。

引用自:https://unix.stackexchange.com/questions/580459