Я пытаюсь использовать выскочку для запуска демона на "добавленном к устройству ввода данных" событии, однако если кто-то знает о другом методе для запуска чего-то на том же событии, которое не вовлекает Выскочку, я буду очень рад также. Так или иначе, когда добавленное к устройству ввода данных событие испускается, myservice.conf называют правильно, и первые несколько строк сценария анализируются. Но когда демон запускается, это никогда полностью начинает работать, и Выскочка по-видимому уничтожает его преждевременно.
Я попытался использовать Выскочку двумя различными способами, оба дают мне ту же проблему:
author "AnVoWiDo"
start on input-device-added
script
device='printinputdevices | grep thecorrectdevice'
echo $device
/start/my/daemon -option device
end script
и также
author "AnVoWiDo"
start on input-device-added
exec myscript.sh
где myscript.sh файл содержит сценарий выше. Команда эха там только для диагностики и выводов правильно в обоих методах.
Выполнение myscript.sh от терминала запустит демона, превосходного со всего ожидаемого вывода. То же верно для выполнения "/start/my/daemon - команда" устройства опции, оба произведут что-то вроде
device 0: /dev/input/event9 mydevice
Display name: :0
Но при запуске его от Выскочки (с сервисом myservice запускаются или путем включения нового устройства ввода данных), выходные остановы на полпути 'Отображаемое имя::0' и только регистрирует 'Отображаемое имя': в котором Выскочка точки уничтожает процесс. Это смотрит на меня как двойное двоеточие в выводе, преступник (или конечно:0), и возможно Выскочка принимает его за своего рода код ошибки?
Кто-либо знает о другом методе запуска моего сервиса в корректный момент? Возможно, я пропустил что-то глупое и очевидное при создании Выскочки conf файлом, который может быть зафиксирован? Наконец, возможно, Выскочка может в некотором роде быть убеждена проигнорировать "::0" в выводе (если это действительно - причина, конечно) и продолжают управлять демоном?
Отображаемое имя:0 относится к X дисплеям. Это работает в Вашем терминале GUI, потому что $DISPLAY установлен на:0.
Если Вы хотите, чтобы сервис запустился на Вашем GUI, то необходимо сделать
env DISPLAY=":0"
exec /start/my/daemon
Выскочка запускает скрипт как корень, который, вероятно, не имеет набора среды ДИСПЛЕЯ (продемонстрированный Вашей отладкой сценария: Display name: <empty>
. Когда Вы запускаете скрипт из командной строки, ДИСПЛЕЙ взят от Вашего ENV учетной записи пользователя и устанавливается правильно.
Можно или использовать ответ SpamapS для добавления ДИСПЛЕЯ, чтобы нанять среду или выполнить команду с exec su - <your account> ...
.