systemctl статус показывает : "State: degraded"

может показаться, что его интерпретация как клавиши Esc находится на более базовом уровне, чем bash. Возможно, в строке чтения?

Это даже ниже. Это фундаментальное свойство работы терминалов в Unix и Unix-подобных операционных системах. Операционная система рассматривает ввод-вывод терминала как последовательность 8-битных (или даже 7-битных) символов. Функциональные клавиши и расширенные клавиши передаются как многосимвольные escape-последовательности.

В реальных терминалах эти escape-последовательности генерируются встроенным ПО в самом терминале. В программах эмулятора терминала эмулятор терминала превращает данные нажатия клавиш (которые он получил через любой пользовательский интерфейс, который он использует для общения с клавиатурой, будь то система X Window, USB-устройство hid или устройство событий Linux) в escape-последовательности.

Такие приложения, как vim и различные библиотеки редактирования строк, пытаются отличить их от простого нажатия клавиши Esc по (фактически) времени между чтением escape-символа. и читая следующие символы. Если символы прибывают достаточно быстро один за другим, они рассматриваются как escape-последовательность.

Где я могу найти это задокументированное?

Обработка тайм-аута управляющих последовательностей во входных данных задокументирована в vim в : help ttimeout и для ZLE Z Shell в zshzle страница руководства. Основная идея о том, что терминалы генерируют escape-последовательности, широко документирована.

Сложнее найти документацию по конкретным генерируемым escape-последовательностям.Многие, а в настоящее время, возможно, большинство терминалов (в частности, эмулируемые терминалы) произносят управляющие последовательности, которые произносились терминалами DEC VT (когда они находятся в том, что Digital называет «режимом ANSI») в течение многих лет. DEC предоставляет документацию для своих терминалов, и вы можете найти ее в явном обсуждении того, что Shift + Tab закодировано, как в главе 8 документа VT525 Programmer Information.

Однако: если вы используете виртуальный терминал ядра в Linux или BSD, где программа эмулятора терминала является частью ядра операционной системы, соблюдение соглашений DEC VT заметно нечеткое, когда дело доходит до input управляющих последовательностей. Частично это связано с тем, что операционные системы, такие как FreeBSD, фактически придерживаются соглашений о виртуальных терминалах SCO XENIX по умолчанию, здесь. В результате получается странная смесь DEC VT и SCO XENIX, не имеющая отношения ни к одному реальному терминалу.

Примесь - это не просто несоответствие между эмуляциями входных и выходных терминалов. Это дополнительно усугубляется тем фактом, что современные конфигурации пытаются переопределить настройки SCO XENIX по умолчанию для последовательностей управления вводом, но делают это лишь частично.Так, например: в последних версиях FreeBSD можно обнаружить, что F6 - это управляющая последовательность DEC VT CSI 1 7 ~ , а не SCO XENIX последовательность, которая скомпилирована в эмулятор терминала ядра, но Shift + F6 по-прежнему является скомпилированной управляющей последовательностью SCO XENIX CSI d , а не Управляющая последовательность DEC VT CSI 1 7 ; 2 ~ .

И ничего из этого вообще нет в документации FreeBSD.

Дополнительная литература

24
03.06.2018, 05:48
6 ответов

Eso significa que algunos de sus servicios no pudieron iniciarse. Puede verlos si ejecuta systemctl;sin el argumento status.

Deberían mostrar algo como,

loaded failed failed

O simplemente puede enumerar los servicios fallidos con systemctl --failed, en mi caso muestra

  UNIT                        LOAD   ACTIVE SUB    DESCRIPTION                
● postgresql@9.4-main.service loaded failed failed PostgreSQL Cluster 9.4-main

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

Normalmente,necesitará leer el diario/registro para averiguar qué hacer a continuación con respecto a ese elemento que falla, usando journalctl -xe. Si solo desea restablecer las unidades para que el sistema "diga" runningcon un punto verde, puede ejecutar:

systemctl reset-failed
119
27.01.2020, 19:41

Чтобы исправить это, я перезапустил службы, которые не работали, используя что-то вроде:

sudo systemctl restart postgresql@9.4-main.service

Однако он не работает с такими службами, как systemd -initctl.service. Отключение и повторное подключение raspberry pi у меня работает, однако я рекомендую попробовать перезапустить службы вручную.

0
27.01.2020, 19:41

Вы также можете попробовать:

sudo systemctl reset-failed

Ошибка сброса systemd очищает неисправные единицы. Вы можете вручную удалить неисправные устройства с помощью команды systemctl reset -failed. Это можно сделать для всех юнитов или для одного. Службы, которые больше не нужны, лучше остановить и отключить.

reset-failed [PATTERN...]
           Reset the "failed" state of the specified units, or if no unit name is passed, reset the state of all units. When a unit
           fails in some way (i.e. process exiting with non-zero error code, terminating abnormally or timing out), it will
           automatically enter the "failed" state and its exit code and status is recorded for introspection by the administrator
           until the service is stopped/re-started or reset with this command.

           In addition to resetting the "failed" state of a unit it also resets various other per-unit properties: the start rate
           limit counter of all unit types is reset to zero, as is the restart counter of service units. Thus, if a unit's start
           limit (as configured with StartLimitIntervalSec=/StartLimitBurst=) is hit and the unit refuses to be started again, use
           this command to make it startable again.
24
27.01.2020, 19:41

Чтобы более кратко ответить на исходный вопрос:

systemctl | grep fail

3
27.01.2020, 19:41

Список неисправных устройств/служб

$ systemctl --не удалось

НАГРУЗКА УСТРОЙСТВА АКТИВНА ПОДОПИСАНИЕ
● ipmievd.service загружен сбой сбой Ipmievd Daemon
● kdump.service загружен, сбой, сбой, аварийное восстановление ядра, активация

LOAD = Отображает, правильно ли было загружено определение устройства.
ACTIVE = Состояние активации устройства высокого уровня -, т. е. обобщение SUB.
SUB = Низкий -уровень активации устройства, значения зависят от типа устройства.

Перечислены 2 загруженных устройства. Пройдите --все, чтобы увидеть загруженные, но неактивные юниты.
Чтобы показать все установленные юнит-файлы, используйте «systemctl list -юнит-файлы -».

15
12.02.2020, 03:35

Найти причину отказа:

sudo systemctl status <service>

(замените <service>именем вышедшей из строя службы ). Вы найдете много информации об услуге, а также о причине сбоя.

0
09.07.2020, 06:33

Теги

Похожие вопросы