LINUX.ORG.RU

Правило udev неработат!!

 , ,


1

2

Вопрос в следующем: Нужно чтоб при вставлении флешки (пока любой) выполнялся скрипт. Соответственно это происходит через правила udev (не мне вам говорить). Собственно создаю правило типа: KERNEL==«sdb» , RUN+=«/home/gps/gps/runTest.sh» в /etc/udev/rules.d/GPS.rules Проверяю его: udevadm test /sys/block/sdb правило без ошибок и скрипт вроде должен выполняться, но не выполняется((

Ответ на: комментарий от infomeh

udevadm control --reload-rules Делал, без эффекта(

Права у скрипта: -rwxrwxrwx И вроде флаг запуска стоит

JokesterT
() автор топика

KERNEL==«sdb»

Так нельзя, т.к. имя может оказаться любым.

i586 ★★★★★
()
Ответ на: комментарий от metawishmaster

Не, вертел меня udev на usb с моими правилами и вашими правками(((

Я стоко инфы блин перелопатил. И нифига не получается((

JokesterT
() автор топика

Что содержит runTest.sh? udev выделяет очень немного времени на запускаемые через RUN программы, прибивая их по его истечении. Если должно запускаться что-то долгоиграющее, создайте сервис и запускайте его через SYSTEMD_WANTS.

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

Да, действительно. Скрипт работает от 160 секунд, в идеале 30 минут.

А нет примеров реализации, а то я нуб и в манах бывает не понимаю многого, али ссылку куда)))

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

Что-то типа:

ACTION=="add", KERNEL=="sd*", ENV{ID_BUS}=="usb", \
    TAG+="systemd", ENV{SYSTEMD_WANTS}+="onFlashInserted.service"

Ну и в /etc/systemd/system/onFlashInserted.service:

[Service]
Type=oneshot
ExecStart=/путь/к/скрипту

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

Не, не заработало(((

Пошел дальше маны курить.

А есть разница что скрипт запускает? В моем случае это SDR приемник.

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

А есть разница что скрипт запускает? В моем случае это SDR приемник.

Покажите скрипт.

Rootlexx ★★★★★
()

--debug пробовал указывать? Что логи говорят?

dgeliko ★★
()

а так прокатит?

SUBSYSTEM=="block", ATTR{partition}=="*", ACTION=="add", SUBSYSTEMS=="usb", RUN+="/usr/bin/touch /tmp/usbtest"

metawishmaster ★★★★★
()

Вообще, полезная штука «udevadm info -a -p /sys/block/sdX», чтоб посмотреть какие свойства/атрибуты есть. И «ATTR{partition}» нету... но можно заменить на KERNEL==«sd*»

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

Скрипт прост до безобразия:

#!/bin/sh

hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0

Из gpssim.bin берутся данные, он создается отдельно. Длительность разная, но не менее 600 сек нужно.

Пока с флешкой не получалось (не успел реализовать написанное выше), пробовал сделать через хоткей клавиши, но каким хреном этот бублик ограничивает длительность до 100 сек?

То есть если запускаю с терминала то стабильно 654 секунды, а через хоткей с клавы 100 сек.

При этом лог выдает:

result: streaming terminated (-1004)

И почему так не ясно(((

JokesterT
() автор топика
Ответ на: комментарий от Rootlexx

Сделал абсолютно так как вы написали. Я с линуксом на уровне здрасссстее.)))

Так глубоко мне лезть не приходилось(

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

значит, у Вас скрипт запускается, но его прибивают по таймауту?
(просто сомнения были про systemd-based системы)

ок... ща посмотрим, шо там с этими таймаутами %)

p.s. я сам с такой проблемой не сталкивался, но интересно

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

Тоже было такое, но у меня udev запускал скрипт, который проверял наличие xorg и запускал графическую программу. В итоге по таймауту прибивалось и скрипт и Gui. Но починил. Надо глянуть как.

irton ★★★★★
()
Последнее исправление: irton (всего исправлений: 1)
Ответ на: комментарий от JokesterT

вот что получилось:
нужен еще один простой скриптик, который будет запускать runTest.sh, /home/gps/gps/runTest-wrapper.sh:

#!/bin/bash

echo /home/gps/gps/runTest.sh | at now

и «chmod +x /home/gps/gps/runTest-wrapper.sh»

ну и строка udev'a:
SUBSYSTEM=="block", KERNEL=="sd?", ACTION=="add", SUBSYSTEMS=="usb", RUN+="/home/gps/gps/runTest-wrapper.sh"


как-то так...

metawishmaster ★★★★★
()
Последнее исправление: metawishmaster (всего исправлений: 2)
Ответ на: комментарий от JokesterT

Нигде не опечатались? Регистр имеет значение.

Перезагружались?

Покажите вывод systemctl status onFlashInserted.service после вставки флешки.

Rootlexx ★★★★★
()
Ответ на: комментарий от metawishmaster

Бублику не нравится видимо at now, судя по логу:

Nov  2 11:47:05 gps-NUC6CAYH org.gnome.SettingsDaemon.MediaKeys.desktop[1475]: message repeated 2 times: [ /home/gps/gpsi/runTest.sh: 6: /home/gps/gpsi/runTest.sh: at: not found]
JokesterT
() автор топика
Ответ на: комментарий от metawishmaster

Но если сделать:

sudo apt install at

То все пашет… 100 секунд пашет((

сделал как сказано:

echo /home/gps/gpsi/runTestall.sh | at now

В ruless внес изменеия, chмоднул

JokesterT
() автор топика
Ответ на: комментарий от Rootlexx

Вот так вот:

gps@gps-NUC6CAYH:~/gpsi$ systemctl status onFlashInserted.service
Warning: The unit file, source configuration file or drop-ins of onFlashInserted.service changed on disk. Run 'systemctl daemon
● onFlashInserted.service
   Loaded: loaded (/etc/systemd/system/onFlashInserted.service; static; vendor preset: enabled)
   Active: inactive (dead) since Sat 2019-11-02 12:09:02 +07; 4s ago
  Process: 30860 ExecStart=/home/gps/gpsi/runTest.sh (code=exited, status=0/SUCCESS)
 Main PID: 30860 (code=exited, status=0/SUCCESS)

ноя 02 12:09:02 gps-NUC6CAYH systemd[1]: Starting onFlashInserted.service...
ноя 02 12:09:02 gps-NUC6CAYH runTest.sh[30860]: warning: commands will be executed using /bin/sh
ноя 02 12:09:02 gps-NUC6CAYH runTest.sh[30860]: job 4 at Sat Nov  2 12:09:00 2019
ноя 02 12:09:02 gps-NUC6CAYH systemd[1]: Started onFlashInserted.service.
JokesterT
() автор топика

Решено

Господа, всем огромнейшее спасибо. Проблему решил при помощи nohup.

Причем я и раньше пробовал его, и в сам скрипт писал перед командой и настройках комбинации клавиш перед скриптом писал. В итоге полностью команду написал при определении комбинации клавиш.

Вот так выглядит

nohup hackrf_transfer -t /home/gps/gpsi/gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 &

Еще раз спасибо за отзывчивость.

JokesterT
() автор топика
Ответ на: Решено от JokesterT

интересненько... меня nohup, в свое время, послал лесом, а фишку с at я на каком-то буржуйском сайте откопал (у меня держит бесконечно), но хорошо, что получилось :)

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

udev неработат!!

Нихт клювен клац-клац. )))

anonymous
()

Меня заинтересовал еще один момент:

Почему при отключенном мониторе (физически, пред запуском компа), не срабатывают горячие клавиши? Ладно, фиг с ним, эмулятор VGA монитора паяется за пару минут, но почему так.

Причем инфу я так и не нашел.

JokesterT
() автор топика
Ответ на: комментарий от metawishmaster

А at now так и не заработал. Я всяко пробовал, не хочет и все тут))

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