
У меня установлен 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
).