Как использовать демон 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 и замены URI в скрипте .js (из примера выше), который привязан к этой кнопке, наfs.writeFile().

Моя проблема в том, что Triggerhappy не может перезаписывать файлы .js. Когда я запускаю этот скрипт вручную из терминала, он работает отлично.

Мне удалось запустить Triggerhappy как root, это не помогло. Как мне заставить Triggerhappy перезаписать файл, или есть более элегантное решение?

EDIT: Это вывод из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

решение1

По умолчанию triggerhappyдолжен запускаться как nobody. Одним из обходных путей является предоставление nobodyправа на вызов определенной команды путем редактирования файла sudo. Но не обязательно использовать root, вашего обычного пользователя должно быть достаточно, если он может запустить скрипт.

В конфигурации triggerhappy убедитесь, что у вас есть полный путь к вашему скрипту.

И последнее, но не менее важное: проверьте ваши файлы журналов ( syslogвозможно, и другие в /var/log).

Связанный контент