Терминал Linux перенаправляет вывод передаваемых по конвейеру команд на терминал и в файлLinux

Ответить Пред. темаСлед. тема
Anonymous
 Терминал Linux перенаправляет вывод передаваемых по конвейеру команд на терминал и в файл

Сообщение Anonymous »

Хотя эта тема кажется дублированием таких запросов, как «Как перенаправить вывод в файл и стандартный вывод», я не могу заставить свою последовательность команд дать желаемый результат.
Это команда последовательность, которая работает:

Код: Выделить всё

mosquitto_sub -h 192.168.1.5 -v -t ArgyleCourt/Property/# | xargs -d$'\n' -L1 sh -c 'date "+%Y-%m-%d %T.%3N $0"' | grep "IrrigationTank\|BoreP\|Hub"
... и дает желаемый результат:

Код: Выделить всё

2024-12-25 10:54:17.255 ArgyleCourt/Property/IrrigationTank/WaterLevel 84
2024-12-25 10:55:17.254 ArgyleCourt/Property/IrrigationTank/WaterLevel 83
2024-12-25 10:55:35.243 ArgyleCourt/Property/BorePump/HeartBeat ON
2024-12-25 10:55:35.308 ArgyleCourt/Property/Hub/HeartBeat ON
2024-12-25 10:56:17.253 ArgyleCourt/Property/IrrigationTank/WaterLevel 84
2024-12-25 10:56:33.479 ArgyleCourt/Property/Hub/Notification Arduino_TheHub|INFO|DHCP OK
2024-12-25 10:57:17.251 ArgyleCourt/Property/IrrigationTank/WaterLevel 84
2024-12-25 10:57:35.234 ArgyleCourt/Property/BorePump/HeartBeat ON
2024-12-25 10:57:35.295 ArgyleCourt/Property/Hub/HeartBeat ON
2024-12-25 10:57:52.391 ArgyleCourt/Property/Hub/ChipTemp 45
Эта командная строка использует команду mosquitto (брокер MQTT) для запроса брокера по конкретной теме ArgyleCourt/Property/#, передаваемой по конвейеру в args чтобы добавить отметку даты/времени и передать ее в grep, чтобы отфильтровать сообщения для трех контроллеров (TheHub, IrrigationTank и BorePump).
В соответствии с связанный запрос выше, это:

Код: Выделить всё

(mosquitto_sub -h 192.168.1.5 -v -t ArgyleCourt/Property/# | xargs -d$'\n' -L1 sh -c 'date "+%Y-%m-%d %T.%3N $0"' | grep "IrrigationTank\|BoreP\|Hub") 2>&1 | tee MQTT_TankfillMsgs.txt
... он должен иметь вывод в терминале и файле. Файл создается, но в него никогда не записывается. () используются для захвата/группировки всей последовательности команд.
В другом ответе предлагается использовать unbuffer. Я добавил эту команду перед mosquitto_sub, но это не повлияло на результат.
Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/793 ... l-and-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Linux C-Shell — оператор If на AWK, передаваемый по конвейеру из WC
    Anonymous » » в форуме Linux
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Ошибка «Файл не найден» при запуске подпроцесса, содержащего передаваемые по конвейеру команды
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Интегрированный терминал VSCode не имеет команд в Linux [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • В каком порядке выполняются команды bash по конвейеру? [дубликат]
    Anonymous » » в форуме Linux
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Запрос на помощь по конвейеру RAG
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»