как сохранить /dev/… в переменную?

Как сохранить данные с устройства, например /dev/random или любого другого, в переменную вместо файла?

>/tmp/mouse_event
(cat /dev/input/mice | od -t x1 -w8 >> /tmp/mouse_event &)
sleep 3 #сколько ждать событий мыши
catpid=$(ps -eo pid,args | grep "cat /dev/input/mice" | head -1 | cut -d' ' -f3)
[[ -n $catpid ]] && kill -15 $catpid && fuser -k /tmp/mouse_event
[[ $(wc -l </tmp/mouse_event) -gt 1 ]] && echo MOUSE || echo SLEEP
этот код нужен, чтобы powerdevil не включал спящий режим - отслеживание событий мыши во всех Xorg-сеансах.
Dobrov
cat /dev/input/mice | od -t x1 -w8 >> /tmp/mouse_event
catpid=$(cat /tmp/mouse_event)
Ошибки в тексте-неповторимый стиль автора©
Еще один вариант - не создавать новый файл, а использовать построчное/побайтовое чтение нужного файла, … например, для того же /dev/input/mice
#!/bin/bash
cat /dev/input/mice | while read line
do
# … свои хотелки
# чтение событий … или в неизменном виде  или побайтно - выбрать нужное
# echo $line
# echo $line | od -t x1
done
exit 0
Нет событий мыши, нет вывода данных.

PS - хотя, возможно, вариант indeviral и лучше - просто я так и не понял смысл всего этого ... неужели нельзя обойтись вообще без этого?
Ошибки не исчезают с опытом - они просто умнеют
vasek - в таком варианте cat читает бесконечно, а мне нужно прерывание через секунд 30. read -t 30 не помогает…

vasek
я так и не понял смысл всего этого … неужели нельзя обойтись вообще без этого?
Дано: игра запускается в отдельном сеансе, например tty2. В основном tty1 для энергосбережения используется powerdevil.
Если играть в tty2 только мышью, то powerdevil почему-то считает комп бездействующим и запускает скрипт перехода в ждущий режим.
Чтобы комп не «засыпал», я добавил в скрипт проверку на события мыши, т.к. на нажатия клавиатуры powerdevil реагирует адекватно.
А systemd-inhibit на powerdevil не действует?
vs220
А systemd-inhibit на powerdevil не действует?
Надо, чтобы комп всё же «засыпал». А если блокировать по имени процесса игры, то комп вообще не заснёт, даже если нет событий мыши\клавы:

systemd-inhibit --mode=block «имя процесса игры»
Dobrov
Чтобы комп не «засыпал», я добавил в скрипт проверку на события мыши
Имхо, /dev/input/eventX (или /dev/input/mice) содержит полную информацию о событиях мыши, но и сложен в обработке ...
Навскидку более простые альтернативы определения бездействия мыши .... просто для информации ...
1. Отслеживать количество прерываний ... но подойдет не всегда, нужно смотреть, что сидит на этом прерывании. Например, у меня ноутбук и есть тачпад и есть USB mouse, ничего кроме мыши больше не сидит
grep usb /proc/interrupts
16:          0      55352          0          0   IO-APIC  16-fasteoi   ehci_hcd:usb1, ehci_hcd:usb3
Следил в течении 10 минут, USB мышь не трогал, пользовался только тачпадом .... количество прерываний не изменилось
grep usb /proc/interrupts | awk '{print $3}'
52540
PS - но нужно проверять при большем времени, возможно что то завязано еще и может изредка количество прерываний увеличиваться на 1 или 2 ... но если такое и будет, то можно выполнять сравнение с точностью, например, 3 ...
2. Отлеживание координат мыши - здесь возможно два варианта
- только координаты, нажитие клавиш не фиксируется (но вряд ли при нажатии клавиш не меняются координаты)
- и координаты и нажатие - но в этом случае идет непрерывный вывод данных, похожее на /dev/input/eventX, что не есть хорошо.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.