Выскочка правильно не запускает сервис (или уничтожает его немедленно),

Я пытаюсь использовать выскочку для запуска демона на "добавленном к устройству ввода данных" событии, однако если кто-то знает о другом методе для запуска чего-то на том же событии, которое не вовлекает Выскочку, я буду очень рад также. Так или иначе, когда добавленное к устройству ввода данных событие испускается, 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" в выводе (если это действительно - причина, конечно) и продолжают управлять демоном?

2
задан 2 December 2011 в 03:41

2 ответа

Отображаемое имя:0 относится к X дисплеям. Это работает в Вашем терминале GUI, потому что $DISPLAY установлен на:0.

Если Вы хотите, чтобы сервис запустился на Вашем GUI, то необходимо сделать

env DISPLAY=":0"
exec /start/my/daemon
2
ответ дан 2 December 2019 в 02:35

Выскочка запускает скрипт как корень, который, вероятно, не имеет набора среды ДИСПЛЕЯ (продемонстрированный Вашей отладкой сценария: Display name: <empty>. Когда Вы запускаете скрипт из командной строки, ДИСПЛЕЙ взят от Вашего ENV учетной записи пользователя и устанавливается правильно.

Можно или использовать ответ SpamapS для добавления ДИСПЛЕЯ, чтобы нанять среду или выполнить команду с exec su - <your account> ....

2
ответ дан 2 December 2019 в 02:35

Другие вопросы по тегам:

Похожие вопросы: