Triggerhappy 데몬을 사용하여 파일을 덮어쓰는 방법

Triggerhappy 데몬을 사용하여 파일을 덮어쓰는 방법

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 파일을 덮어쓸 수 없다는 것입니다. 터미널에서 이 스크립트를 수동으로 실행하면 정상적으로 실행됩니다.

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

play_uri_x-node.js에 작성된 스크립트인 memory.js에 대한 항목이 없습니다.

답변1

기본적으로 triggerhappy로 실행되어야 합니다 nobody. 한 가지 해결 방법은 nobodysudo 파일을 편집하여 특정 명령을 호출할 수 있는 권한을 부여하는 것입니다. 그러나 루트를 사용할 필요는 없으며 일반 사용자가 스크립트를 실행할 수 있으면 충분합니다.

Triggerhappy 구성에서 스크립트에 대한 정규화된 경로가 있는지 확인하세요.

마지막으로 로그 파일( syslog/var/log.

관련 정보