Вы можете использовать программу xinput
для управления периферийными устройствами ввода, включая (де) их активацию.См. Прокрутка движений мыши при нажатой средней кнопке для получения подробного руководства. Вкратце, запустите xinput list
, чтобы определить имя или числовой идентификатор сенсорной панели, затем
xinput --set-prop 'name of touchpad device' 'Device Enabled' 0
Для повторного включения измените окончательный 0
на 1
. Для переключения вы можете использовать
enabled=$(xinput --list-props 'name of touchpad device' | sed -n 'y/\t/ /; s/^ *Device Enabled ([0-9]*): *//p')
xinput --set-prop 'name of touchpad device' 'Device Enabled' $((1-enabled))
Поместите команду отключения где-нибудь в сценарии запуска X. Где его разместить, зависит от среды вашего рабочего стола и от того, как вы начинаете свой X-сеанс. Если вы запускаете X вручную с помощью startx
, он попадает в ~ / .xinitrc
. Если вы запустите свой собственный сценарий X-сеанса ( ~ / .xsession
), эта команда перейдет туда. Если вы используете предопределенный сеанс в графическом диспетчере входа в систему, это зависит от типа вашего сеанса и от диспетчера отображения; многие, но не все системы запускают команды из ~ / .xprofile
перед запуском диспетчера сеансов или диспетчера окон.
Это включает или отключает сенсорную панель на программном уровне, который может не быть взаимозаменяемым с кнопкой рядом с сенсорной панелью.
В качестве альтернативы, большинство сенсорных панелей поддерживают отключение сенсорной панели при вводе .
Возможно, fdinfo
для fd часов может быть полезен:
$ readlink /proc/$(pgrep inotify)/fd/3
anon_inode:inotify
$ cat /proc/$(pgrep inotify)/fdinfo/3
pos: 0
flags: 00
mnt_id: 11
inotify wd:1 ino:357a sdev:700000 mask:fff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7a35000000000000
sdev
кажется комбинацией старших :младших номеров устройств, как видно из выходных данных lsblk
, например:
$ lsblk | grep 7
loop0 7:0 0 80.5M 1 loop /snap/core/2462
(Я действительно наблюдал /snap/core/2462
.)
Для моего /dev/sda1
, то есть 8:1
, вывод выглядел так:
pos: 0
flags: 00
mnt_id: 11
inotify wd:1 ino:aae1b sdev:800001 mask:fff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:1bae0a0038e16969
Этого должно быть достаточно, чтобы выяснить, что блокирует размонтирование, даже если в списке нет конкретных отслеживаемых каталогов или файлов.
(Незавершенный ответ)
Благодаря ответу муру за кикстарт.
Использование информации в/proc/[pid]/fdinfo/[fd#]
:
mnt_id
в качестве индекса в /proc/[pid]/mountinfo
или , возможно, использовать глобальную информацию о монтированииino
в десятичное число btrfs
(требуется имя пути)ext4
(требуется устройство, возможно, через интерпретировать поле `sdev `в /proc/Возможно, lsof :перечисляет только файлы определенного типа с a_inode
.
Слишком медленный как сценарий оболочки со всеми grep
ing. Возможно интерфейс системного вызова для информации /proc .