Как запустить команду " cat " в фоновом режиме внутри скрипта

У меня есть USB-модем LTE, подключенный к моей малине, и мне нужно прочитать ответы, отправленные через последовательную линию, сгенерированные запросами, отправленными с помощью команды "echo". Код:

cat /dev/ttyUSB0 > ttyUSB0_logs &
echo "AT+csq" > /dev/ttyUSB0
echo "AT+cgreg=2" > /dev/ttyUSB0
echo "AT+cgreg?" > /dev/ttyUSB0

проблема в том, что хотя команда" cat " должна работать в фоновом режиме и весь вывод направлен в файл, скрипт все равно зависает в этот момент. Если я использую первую команду за пределами скрипта, он работает так, как я ожидаю - он сохраняет все выходные данные в файл ttyUSB0_logs на заднем плане, и я могу использовать полученные данные для других операций. Вопрос в том, как я могу интегрировать первую команду в скрипт, чтобы он работал таким образом? Большое спасибо.

5
задан 573v0
источник

2 ответов

помните: в оболочке: если вы выполняете все команды одну за другой, то первая команда 'cat ....'продолжает выполняться даже после выполнения последней команды. в сценарии оболочки: 'cat ...'команда будет убита вскоре после выполнения последней команды и поэтому не может больше читать и писать. Для первого шага: попробуйте поместить " sleep 1 "между командными строками и более длинным" sleep 10 " после последней команды.

0
отвечен mogl 2016-03-10 19:59:35
источник

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

для этого нужен тайм-аут, чтобы установить начала "а"

ваш скрипт может взрывать их слишком быстро

попробуйте поставить сон перед каждой командной строки

регистр был s, который удерживал время ожидания. Давненько не виделись, так что я забыл какой. 2 секунды I думаю было типично

0
отвечен infixed 2016-03-10 20:08:32
источник

Другие вопросы bash command-line linux