В:
cmd1 | cmd2
Большинство оболочек (оболочка Bourne, (t)csh, а также yash и некоторые версии AT&T ksh, при некоторых условиях являющиеся заметными исключениями) ждут обоих cmd1
и cmd2
.
В bash
вы заметите, что
sleep 1 | uname
возвращается через одну секунду.
In:
btmon | grep -m 1 '@ Device Disconnected'
grep
завершится, как только найдет одно вхождение шаблона, но bash
все равно будет ждать btmon
.
btmon
обычно умирает из-за SIGPIPE при следующей записи в канал после возврата grep
, но если он никогда больше ничего не записывает, он никогда не получит этот сигнал.
Вы можете заменить #! /bin/bash
с #! /bin/ksh93
, так как это оболочка, совместимая с bash
и ожидающая только последнего компонента конвейера. Затем в
btmon | grep -m 1 '@ Device Disconnected'
после возврата grep
btmon
останется работать в фоновом режиме, а оболочка продолжит работу с остальной частью скрипта.
Если вы хотите убить btmon
, как только grep
вернется, POSIXly, вы можете сделать что-то вроде:
sh -c 'echo "$$"; exec btmon' | (
read pid
grep -m1 '@ Device Disconnected' || exit
kill "$pid" 2> /dev/null
true)
Вы можете войти по SSH, но я предполагаю, что это не то, что вам нужно.
Я бы порекомендовал попробовать Synergy - это программное обеспечение для совместного использования клавиатуры и мыши, которое работает на большинстве * nix-боксов, Windows и Mac.
Если вы предпочитаете бесплатную версию, которую они предлагают, это здесь , но имейте в виду, что он не поддерживается.
Вам нужно будет установить машину, на которой вы хотите использовать клавиатуру, в качестве сервера, а модуль centos - в качестве клиента.
Воспринимайте это как PoC, но поскольку USB-клавиатуры часто работают из коробки, вы можете взглянуть на эту, основанную на Arduino: http: / /hackaday.com/2012/06/29/turning-an-arduino-into-a-usb-keyboard/
Следующим шагом будет использование arduino в качестве сервера, получающего входные данные с вашего ноутбука с защитой Ethernet.