Node-RED:Библиотеки/node-red/Exec

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Нода «Exec»

Запускает системную команду и возвращает ее результат.

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

То, какую команду нужно запустить, можно задать в меню редактирования ноды или во входящем сообщении.

Свойства присылаемого сообщения

  • Свойство «payload» (строка) – если в меню редактирования ноды стоит галочка рядом с пунктом «Append», значение в «msg.payload» будет добавлено к выполняемой команде
  • Свойство «kill» (строка) – тип сигнала для завершения процесса, запущенного нодой
  • Свойство «pid» (число/строка) – ID процесса, который был запущен нодой и который нужно завершить

Свойства отправляемого сообщения

  • Выходной порт 1 – стандартный вывод данных:
    • Свойство «payload» (строка) – стандартный вывод данных командой
    • Свойство «rc» (объект) – только для режима «exec mode»; копия объекта с кодом возврата, также отправляемого через выходной порт 3
  • Выходной порт 2 – стандартный вывод данных об ошибках:
    • Свойство «payload» (строка) – стандартная ошибка команды
    • Свойство «rc» (объект) – только для режима «exec mode»; копия объекта с кодом возврата, также отправляемого через выходной порт 3
  • Выходной порт 3 – код возврата:
    • Свойство «payload» (объект) – объект с кодом возврата, а также, возможно, свойства «message» и «signal»

Подробное описание

По умолчанию нода «Exec» использует системную команду «exec», которая вызывает команду, ждет ее выполнения, а затем возвращает результат. К примеру, при успешном выполнении команды нода должна выдать код возврата { code: 0 }.

Опционально можно воспользоваться командой «spawn», возвращающей результат от «stdout» и «stderr» прямо во время работы команды – как правило, по одной строчке за раз. После выполнения команды нода отправит объект с кодом возврата на выходной порт 3. Например, при успешном выполнении команды она должна выдать код возврата { code: 0 }.

Если возникнет ошибка, в свойство «msg.payload», отправляемое через выходной порт 3, могут быть добавлены дополнительные подсвойства – «message» и «signal».

Запускаемая команда задается в меню редактирования ноды – в поле «Command». Ниже него есть секция «Append», с помощью которого к команде можно добавить содержимое «msg.payload» входящего сообщения и дополнительные параметры.

Команды и параметры с пробелами должны быть заключены в кавычки – "Это один параметр".

Значением в возвращаемом «payload» обычно является строка, но если в нем будут обнаружены символы, не входящие в кодировку UTF8, это будет буфер.

Во время работы ноды «Exec» ниже нее будет показана статусная информация – иконка и ID процесса. Изменения этой информации можно считывать при помощи ноды «Status». Завершение процессов

Отправка свойства «msg.kill» завершит один активный процесс. В нем должна быть строка, содержащая тип отправляемого сигнала – например, «SIGINT», «SIGQUIT» или «SIGHUP». Если в этом свойстве содержится пустая строка, то это будет восприниматься как сигнал «SIGTERM».

Если нодой «Exec» запущено более одного процесса, тогда вам также понадобится свойство «msg.pid», где нужно указать ID процесса, который нужно завершить.

Если в поле «Timeout» задано какое-либо значение, и если команда так и не будет выполнена за количество секунд, заданное в этом поле, процесс будет завершен автоматически.

Примечание

Если вы запускаете Python-приложение, то вам, возможно, нужно будет воспользоваться параметром «-u» во избежание буферизации выходных данных.

См.также

Внешние ссылки