Отключение системных сообщений, мешающих запуску BASH-скрипта

Как я могу отключить системные сообщения, которые время от времени появляются в моем BASH-скрипте (например, после того, как я откуда-то захожу на машину через SSH), как на скриншоте ниже? Скрипт BASH использует инструмент диалога, и я запускаю его в Ubuntu 18.04. Я попробовал отключить rsyslog, но это не помогло. Вот скриншот, чтобы проиллюстрировать это поведение: ссылка.

Мой файл службы systemd выглядит примерно так:

[Единица измерения]

Описание = bashscript

После того, как =network.target

После того, как = getty.target

Conflicts=getty@tty1.service

[Обслуживание]

Тип = OneShot

PIDFile = / бег / bashscript.pid

ExecStart = / bin / openvt -s -w - / path / to / bashscript

StandardInput = терминал-сила

StandardOutput= унаследуют

StandardError= унаследуют

[Установить]

WantedBy = graphical.target

Спасибо.

1 ответ

Я думаю, что ваша проблема заключается в следующих строках

StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

Это означает, что стандартный ввод принимает входные данные /dev/console, так как теперь в вашем сервисе указан TTYPath.

Установка стандартного вывода и стандартной ошибки для наследования означает, что они также принимают настройку стандартного ввода, которая в данном случае является /dev/console.

Я не на 100% в этом, но я думаю, именно поэтому вы видите результат, который вы видите. Если вам все еще нужны входные данные, но вы не хотите получать выходные данные, вероятно, вы должны просто:

StandardInput=tty-force

Без двух других строк. Если вы на самом деле не используете Input, вы также можете избавиться от этой строки.

Другие вопросы по тегам