LINUX.ORG.RU
решено ФорумAdmin

Запуск скрипта при подключении usb устройства в debian

 , ,


1

2

Добрый день! нужно сделать так, что когда я подключаю usb камеру к raspberry (debian jessie) запускался скрипт.

Отредактировал файл /etc/udev/rules.d/99-com.rules, добавил туда строку

SUBSYSTEM==«usb», GROUP=«video», OWNER=«pi», MODE=«0660», ATTR{idVendor}==«058f», ATTR{dProduct}==«3862», RUN+=«/home/pi/ stream.sh»

скрипт:

#!/bin/bash ffmpeg -i /dev/video0 -s 640x480 -vcodec mpeg4 -g 60 -vb 500000 -strict experimental -vf yadif -acodec aac -ab 96000 -ac 2 -r 50 -f segment -segment_time 5 -segment_list «/home/pi/ftp/stream.m3u8» -segment_wrap 20 -y «/home/pi/ftp/test-%03d.avi» -vstats_file «/home/pi/stream.log»

Скрипт пишет видео с камеры в плейлист из 20 файлов длительность 5 секунд. Если запустить его руками под пользователем pi все работает идеально. При подключении камеры скрипт запускается и отваливается на 5 файле, при чем те 5 файлов которые создаются

-rw-r--r-- 1 root root 297 Jul 5 14:17 stream.m3u8

-rw-r--r-- 1 root root 673786 Jul 5 14:17 test-000.avi

почему то созданы от рута хотя я владельцем указал

GROUP=«video», OWNER=«pi», MODE=«0660»,

Товарищи, помогите!



Последнее исправление: egorrrr (всего исправлений: 3)

ну ты жжешь!

       OWNER, GROUP, MODE
           The permissions for the device node. Every specified value overrides the compiled-in default value.

anonymous
()

Потому что GROUP и OWNER выставляет права создаваемых спецфайлов в /dev/ а не то, что ты думаешь.

anonymous
()
Ответ на: комментарий от anonymous

и еще:

           Starting daemons or other long-running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished.

anonymous
()

udev

запуск скрипта через RUN+=

Starting daemons or other long-running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished.

P. S.: а, уже написали.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Тебе надо демонизировать процесс при запуске из RUN+=

RUN+=«su user -c 'setsid /home/pi/stream.sh &> /dev/null &'»
или там
RUN+=«echo '/home/pi/stream.sh' | su user -c 'at now'»

Ну или типа того, через nohup там или ещё как, чтобы отвязаться от udev.

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.